Webサイト発注虎の巻ダウンロード
Webサイト発注虎の巻ダウンロード

【作業効率】GASを使ってGoogleドライブの指定フォルダにファイルを一括コピーする

やなさん

まいどです。テクニカルディレクターのやなさんです。

さて、Web制作やサービス開発を行っている人たちは、作業完了時、クライアントにドキュメントを一式納品することってありますよね?

昔は社内サーバーのファイルを圧縮して、メールで送付したり、DVDに焼いて納品したりという方法があったと思いますが、今となってはクラウド上のストレージでのやり取りが増えてきているかと思います。

弊社でのファイル管理はGoogleドライブを利用しています。あるとき、弊社のGoogleアカウント内で管理していたファイル一式を、クライアントのGoogleアカウントに移動ではなく、コピーしなければいけない機会がありました。

クライアントに依頼されて、
「承知しましたー! アップしときまーす!」と軽く回答したものの、ブラウザ上でたくさんのファイルをまとめて引っ越しさせることが思ってる以上に手間だったので、みなさんが今後困らないようにやり方をまとめてみました。

では、さっそく。

なにが手間?

Googleドライブ「指定の場所へ移動」

Googleドライブでフォルダを右クリックしたときに表示されるメニューには、フォルダを移動させる「指定の場所へ移動」というメニューはあっても、フォルダ自体をコピーするメニューはありません。

 

また、ファイルについては「コピーを作成」というメニューはあるものの、同フォルダーにコピーされ、かつ「ファイル名_コピー」のような名前で作成されてしまいます。

このようにブラウザ上で使える機能には制限があり、フォルダごと移動はできるものの、ファイルを指定フォルダへ移動という操作ができません。

GASでGoogleドライブの指定フォルダにファイルをコピーする

コピー方法はChromeの拡張機能や、ローカルのフォルダと同期させてコピーなどあります。

▼フォルダ自体のコピーについては、こちらの記事もご参照ください

とはいえ、手間をさらに削減するべく、今回はGoogle App Script(GAS)で対応してみました。

プログラムファイルはこちら。

function myFunction() {
  var srcFolderId = "hogehogehoge1"; // コピー元フォルダ
  var dstFolderId = "hogehogehoge1"; // コピー先フォルダ
  
  var srcFolder = DriveApp.getFolderById(srcFolderId);
  var dstFolder = DriveApp.getFolderById(dstFolderId);
  
  var dstFolderName = srcFolder.getName();
  
  var newFolder = dstFolder.createFolder(dstFolderName);
  copy(srcFolder, newFolder);//コピー元,コピー先
}

function copy(srcFolder, newFolder){
  var srcFiles = srcFolder.getFiles();//フォルダ内ファイルをゲット
  while(srcFiles.hasNext()) {
    var srcFile = srcFiles.next();
    Logger.log(srcFile.getName());
    srcFile.makeCopy(srcFile.getName(), newFolder);
  }
  var srcFolders = srcFolder.getFolders();//フォルダ内フォルダをゲット
  while(srcFolders.hasNext()) {
    var nextSrcFolder = srcFolders.next();
    Logger.log(nextSrcFolder.getName());
    var nextNewFolder = newFolder.createFolder(nextSrcFolder.getName());
    copy(nextSrcFolder, nextNewFolder); //再帰処理
  }
}

GASプロジェクトに上記コードを埋め込み、srcFolderIdとdstFolderIdのフォルダのIDを変更することで、指定フォルダにすべてのファイルをコピーすることができます。

必要な箇所の修正

上記コードの中で以下の箇所を修正します。

srcFolderId コピー元のURLのfolders/以下の文字列を入力します。
dstFolderId コピー先のURLのfolders/以下の文字列を入力します。

さいごに

ファイルを複製するという行為はGoogleドライブを利用する上での思想に含まれていないのでしょうね。ただ中には、クライアントへ提供しつつ、社内のナレッジとして管理しておきたいファイルも存在するかと思います。

そういった場合に、上記GASを利用することで、簡単に指定のフォルダにコピーして移動することが可能となります。一度作れば、フォルダのIDを変えることでずっと使えるGASプロジェクトになるので、必要に応じて作成してみてください。

以上、やなさんでした。

ほなまた。

3 0 0 0