Googleドライブを使っていると「同じフォルダをもう一つコピーしたい」と思うことはありませんか?
例えば、過去の資料をテンプレートとして残しておきたいときや、別プロジェクトや年度ごとに同じフォルダ階層を作りたいときなどです。
「Googleドライブにはフォルダをそのままコピーする機能がありません。しかし、フォルダ構造を維持したままコピーするには、いくつかの方法があります。本記事では【初心者向け】に3つの方法を解説します。
方法①:Googleドライブでフォルダ内のファイルをコピーする
少量のファイルをコピーしたい場合は、この方法が一番簡単です。
- コピーしたいフォルダを開く。
- 中のファイルをすべて選択(Windowsなら
Ctrl + A
、MacならCommand + A
)。※フォルダが入っている場合は、全選択後、Ctrlキーを押しながらフォルダを選択解除する必要があります。 - 右クリックして「コピーを作成」を選ぶ。
- 自動的に「ファイル名 – コピー」が作られる。
- コピーしたファイルを確認するため、並び順を変更日時でソートする。
- 移動するファイルを選択して、右クリック-【整理】-【移動】-「移動先フォルダを選択(任意)」するとファイルが移動する。
- Q右クリックしても「コピーを作成」が表示されないのはどうして?
- A
ファイル以外にフォルダを選択していると表示されません。ファイルのみを選択しているか確認してください。
方法②:PC経由でGoogleドライブのフォルダをコピーする
フォルダごとダウンロードする方法
- コピーしたいフォルダを開く。
- 中のファイルとフォルダをすべて選択(Windowsなら
Ctrl + A
、MacならCommand + A
)。 - 右クリックをして【ダウンロード】を選択。
- ZIP形式で一括ダウンロードを行う。
- PC上でZIPファイルを解凍すると、元のフォルダ構造が復元される。
- QダウンロードされたZIPファイルはどこにあるの?
- A
ダウンロード設定を変更していない場合は、ダウンロードフォルダにダウンロードされます。
フォルダごとアップロードする方法
- Googleドライブを開く。
- 左上の【+新規】-【ファイルをアップロード】を選択。
- 解凍済みのフォルダを選んでアップロード。
- 中のファイルも一緒にアップロードされ、元の構造が保たれる。
- Google形式のファイル(ドキュメント・スプレッドシートなど)は、ダウンロード時に自動的にMicrosoft形式(.docx, .xlsxなど)に変換されることがあります。再アップロードすると、Google形式に戻す必要があります。
- フォルダ名が同じでも、別フォルダとして扱われます(上書きはされません)。
方法③:Google Apps Scriptでフォルダを丸ごとコピーする(上級者向け)
- 左上の【+新規】-【Google スプレッドシート】を選択。
- 【拡張機能】-【Apps Script】を選択。
- 「function myFunction() {}」を削除する。
- 「コード例」を貼り付ける。
- 「コピー元フォルダID」を取得して、「コピー先のフォルダID」へ貼り付ける。※シングルコーテーション「’」と「’」の間にコピー先フォルダIDを記載。
- 【ドライブにプロジェクトを保存】を選択。
- 「実行する関数を選択」で『startCopying』が選択されていることを確認。
- 【実行】を選択。
- 【権限を確認】を選択する。(初めて【実行】する場合に表示される)
- アカウントの選択を行う。
- 【詳細】を選択する。
- 【無題のプロジェクト(安全ではないページ)に移動】を選択。
- 【続行】を選択する。
- 実行ログを確認し、「実行完了」と表示されていたら完了です。
- Googleドライブを開き、【マイドライブ】を選択すると、複製されたフォルダ【〇〇 copy】が表示される。
コード例
function startCopying() {
var sourceFolderId = 'コピー元のフォルダID';
var targetFolder = DriveApp.getRootFolder();
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
copyFolder(sourceFolder, targetFolder);
}
function copyFolder(sourceFolder, targetFolder) {
var folders = sourceFolder.getFolders();
var files = sourceFolder.getFiles();
// 新しいフォルダを作成
var newFolderName = sourceFolder.getName() + " copy";
var newFolder = targetFolder.createFolder(newFolderName);
// サブフォルダの処理
while (folders.hasNext()) {
var subFolder = folders.next();
copyFolder(subFolder, newFolder);
}
// ファイルのコピー
while (files.hasNext()) {
var file = files.next();
file.makeCopy(file.getName(), newFolder);
}
}
コメント