Google ドライブ上で「このフォルダの中身を別のフォルダにコピーしたい」という場面、よくありますよね。
1つずつドラッグ&ドロップするのは手間ですし、ファイル数が多いと操作ミスも発生しやすくなります。
そこで活躍するのが Google Apps Script(GAS)。
今回は、指定フォルダ内のすべてのファイルを、別のフォルダにまとめてコピーするスクリプトを紹介します。

目次
スクリプトの用途
- 複数ファイルを一括バックアップしたい
- テンプレートフォルダの中身を毎回コピーする運用を自動化したい
- 他ユーザーと共有する前に別フォルダに複製したい
ファイルを移動コピーするGAS
以下のコードを使えば、元のフォルダ内のファイルをすべて別フォルダに複製することができます。
function copyMoveFile() {
// コピー元のフォルダIDを指定
var source_dat = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// コピー先のフォルダIDを指定
var copy_dir = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// フォルダ内のファイルを取得
var files = source_dat.getFiles();
while (files.hasNext()) {
var file = files.next();
var f = file.makeCopy(file.getName(), copy_dir);
// Google Apps Scriptファイルの場合は特殊処理
if (file.getMimeType() === MimeType.GOOGLE_APPS_SCRIPT) {
Drive.Files.update({ parents: [{ id: copy_dir }] }, f.getId());
}
}
}

使い方手順
- Google Apps Script エディタを開く
- 上記スクリプトを貼り付け
source_dat
とcopy_dir
に、それぞれコピー元とコピー先のフォルダIDを入力- メニューから関数
copyMoveFile()
を実行 - 完了!すべてのファイルがコピー先に複製されます
注意点
- Google Apps Script(.gs)ファイルは通常のコピーでは動作しないため、
Drive.Files.update()
を併用しています(GASの拡張サービスが有効である必要があります) - 元のファイルを削除はしないので、「移動」ではなく「コピー」です
おまけ│複製系のスクリプト例
似たようなスクリプトも紹介しておきます。
ファイルを複数コピーする
テンプレートファイルを命名規則にそって、さくっとコピーしたい時に使えます。
- コピーするファイルID
- コピー先のフォルダID
- 複製したい個数
- 複製したいファイル名
を入力してGASを実行してください。
function copyFile()
{
//コピーするファイル(ファイルIDを入力)
var source_dat = DriveApp.getFileById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
//保存する場所(フォルダIDを入力)
var copy_dir = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
//複製したい個数
var last = 9;
//複製したいファイル名(複製したい個数文入力)
var file_names = [
"01_水柱_冨岡義勇(とみおか・ぎゆう)",
"02_炎柱_煉獄杏寿郎(れんごく・きょうじゅろう)",
"03_蟲柱_胡蝶(こちょう)しのぶ",
"04_音柱_宇髄天元(うずい・てんげん)",
"05_恋柱_甘露寺蜜璃(かんろじ・みつり)",
"06_霞柱_時透無一郎(ときとう・むいちろう)",
"07_岩柱_悲鳴嶼行冥(ひめじま・ぎょうめい)",
"08_蛇柱_伊黒小芭内(いぐろ・おばない)",
"09_風柱_不死川実弥(しなずがわ・さねみ)",
];
for (let i = 0; i <= last - 1; i++) {
source_dat.makeCopy(file_names[i], copy_dir);
}
}

ファイルを移動コピーする
フォルダ内のデータを移動コピーしたい時に使えます。
- コピーするフォルダID
- コピー先のフォルダID
を入力してGASを実行してください。
function copyMoveFile() {
//コピーする場所(フォルダIDを入力)
var source_dat = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
//保存する場所(フォルダIDを入力)
var copy_dir = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
var files = source_dat.getFiles();
while (files.hasNext()) {
var file = files.next();
var f = file.makeCopy(file.getName(), copy_dir);
if (file.getMimeType() == MimeType.GOOGLE_APPS_SCRIPT) {
Drive.Files.update({ parents: [{ id: copy_dir }] }, f.getId());
}
}
}

まとめ
Googleドライブの手動コピー作業は、GASで一発解決できます。
定期的なフォルダ複製やテンプレート管理にも応用できるので、ぜひ使ってみてください。