GoogleAppsScript(GAS)でフォルダをコピー


概要

GoogleDriveはシステム上、フォルダをコピーすることができません
ここでは、GoogleAppsScriptでフォルダをコピーする方法をお伝えします。

ソースコード

参考サイト: Qiita: Google Driveでディレクトリごとまるっとコピーしてやるぜ! から引用させていただきました。

index.html
function myFunction() {
  var folders = DriveApp.getFoldersByName("コピーサンプルデータ");
  var dest = DriveApp.createFolder("コピーサンプルデータのコピー");
  while(folders.hasNext()) {
    var folder = folders.next();
    folderCopy(folder, dest);
  }
}

function folderCopy(folder, dest) {
  var folders = folder.getFolders();
  var files = folder.getFiles();

  while(files.hasNext()) {
    var file = files.next();
    // file.makeCopy(dest);とすると、****のコピーというファイル名になるので…。
    file.makeCopy(file.getName(), dest);
  }

  while(folders.hasNext()) {
    var subFolder = folders.next();
    var folderName = subFolder.getName();
    var copyFolder = dest.createFolder(folderName);
    folderCopy(subFolder, copyFolder);
  }  
}

注意点

・GoogleAppsScriptは5分以上起動し続けることができません。
そのため、重いフォルダをコピーする場合、処理がタイムアウトとなってしまうことがあります。
現状この対策方法はないので、コピーするフォルダを減らしましょう。

ドライブアプリを入れて、ローカルにマウントしてからコピーするのが一番早いかもしれません笑