Googleドライブでフォルダを丸ごとコピーしようとして、メニューに見当たらず戸惑った方は多いはずです。
Googleドライブは、ファイルはコピーできますが、フォルダはコピーできません。
仕様なので、探しても出てきません。
先に、やりたいことごとの答えをまとめます。
| やりたいこと | やり方 |
|---|---|
| ファイル1つを複製 | 右クリック →「コピーを作成」 |
| ファイルを複数まとめて複製 | まとめて選択してから「コピーを作成」 |
| フォルダごと複製 | 機能なし。中身を選んでコピーし、新しいフォルダへ移す |
| サブフォルダも含めて複製 | 手作業では厳しい。GASで自動化する |
| 見つけやすくしたいだけ | コピーせず「ショートカットを作成」で足りる |
ファイルをコピーする
- ファイルを右クリックする
- 「コピーを作成」を選ぶ
同じフォルダに「〇〇のコピー」という名前で作られます。
複数のファイルを選んでからでも同じ操作ができます。
Shift を押しながら選ぶと範囲で、Ctrl(Macは ⌘)を押しながらだと飛び飛びで選べます。
フォルダを複製したいとき
フォルダを右クリックしても「コピーを作成」は出てきません。
手作業でやるなら次の手順になります。
- コピー先になる新しいフォルダを作る
- 元のフォルダを開き、中のファイルを全部選ぶ(
Ctrl+A) - 右クリックして「コピーを作成」
- できたコピーをまとめて選び、新しいフォルダへ移動する
この方法では、中にあるサブフォルダはコピーされません。
階層があるフォルダだと、階層の数だけ同じ作業を繰り返すことになります。
そこが現実的でないので、後半のGASにたどり着く、という流れです。
ダウンロードして入れ直す方法はすすめない
フォルダをダウンロードして、また上げ直せばコピーになると思われがちです。
ただしダウンロードするとGoogle形式のファイルはOffice形式に変わります。
スプレッドシートはxlsx、ドキュメントはdocxになって戻ってきます。
関数や共有の設定、コメントも失われます。
写真やPDFだけのフォルダなら問題ありませんが、それ以外では避けたほうが安全です。
見つけやすくしたいだけならショートカット
「別の場所からも開きたい」だけなら、複製する必要はありません。
右クリックの「ショートカットを作成」で、別のフォルダから開けるようになります。
実体は1つのままなので、容量も増えず、更新も1か所で済みます。
サブフォルダごと複製するならGAS
ここからが自動化の話です。
フォルダの中身をまとめて別のフォルダへコピーする処理を、スクリプトで動かします。
Google形式のまま複製されるので、ダウンロードし直す方法のような形式の変化は起きません。
ファイルを移動コピーする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スプレッドシートのほかの操作は、まとめからご覧いただけます。

古い版を削除する方法はこちらです。

まとめ
- Googleドライブにフォルダをコピーする機能はない。ファイルだけ「コピーを作成」できる
- 手作業なら、中身を全部選んでコピーし、新しいフォルダへ移す
- その方法ではサブフォルダは複製されない
- ダウンロードして上げ直すとGoogle形式がOffice形式に変わるので避ける
- 開く場所を増やしたいだけなら「ショートカットを作成」で足りる
- 階層ごと複製するならGASが確実

