Google Apps ScriptでGoogleドライブ上のファイルを他のフォルダに移動させる方法
※『Googleドライブのショートカット機能追加と複数フォルダ所属機能の終了』の記事で記載の通り、2020年9月30日をもって本記事で紹介しているやり方は非推奨となりました。
※本記事はaddFileとremoveFileで説明を進めていますが、フォルダの移動に関しても処理方法は同じになりますので、フォルダの移動についてはaddFile → addFolder、removeFile → removeFolderに読み変えて読んで下さい。
今回の記事ではGoogle Apps Scriptの具体的な活用方法について執筆しようと思います。GASを活用してGoogleドライブ上でファイルを移動させる場合は、addFile()とremoveFile()という2つのメソッドを組み合わせて行います。本記事では、そのやり方をサンプルコードでご紹介します。簡単そうに見えるこの処理ですが、実は小さな落とし穴がありますので、その部分も含めて少し解説をしてみたいと思います。
早速サンプルコードにてファイルを他のフォルダに移動させるためのコードを共有したいと思います。
ファイルを他のフォルダに移動させる
//ファイルを他のフォルダに移動させるコード function sampleCode1() { var sourceId = "1Xcwv7uml0sUSs6SoTOGpMwD3_clh6B-t"; //移動元のフォルダIDを指定 var sourceFolder = DriveApp.getFolderById(sourceId); var destinationId = "1FrExrbF_8nEsFDW5a7MKiVbWuVGtse2Y"; //移動先のフォルダIDを指定 var destinationFolder = DriveApp.getFolderById(destinationId); var fileId = "1ZDvGxjJxpIWDb0UGpLjpuZE0tLT7_rIVWH0bQPlxop4"; //ファイルIDを指定 var child = DriveApp.getFileById(fileId); destinationFolder.addFile(child); //移動先のフォルダに先にファイルを追加 sourceFolder.removeFile(child); //移動先に追加後に移動元のフォルダからファイルの所属情報を削除 }
『 変数の説明 』
sourceId = 移動元のフォルダIDを指定
sourceFolder = 移動元のフォルダ
destinationId = 移動先のフォルダIDを指定
destinationFolder = 移動先のフォルダ
fileId = 移動予定のファイルID
child = 移動予定のファイル
フォルダIDを確認する方法は、いくつかありますが、簡単なのはフォルダを開いた時のURL「https://drive.google.com/drive/folders/1Xcwv7uml0sUSs6SoTOGpMwD3_clh6B-t」の赤文字部分がID部分になります。
ファイルIDを確認する方法は、いくつかありますが、簡単なのはファイルを右クリックして「共有可能なリンクを取得」で取得できるURL「https://drive.google.com/open?id=1ZDvGxjJxpIWDb0UGpLjpuZE0tLT7_rIVWH0bQPlxop4」の赤文字部分がID部分になります。
実際に動くコードは上記コードになります。このコードでは、それほど重要に見えない部分が実は重要であるという注意点がありますので、今回はそのことについてメインで話を致します。
上記コードでは、移動元フォルダと移動先フォルダを指定してそこから対象のファイルにフォルダ所属情報を追加したり削除したりしてファイルの移動が完結しています。このコードの中で一番重要な部分はaddFileとremoveFileの記載順になります。
ファイルの移動時は移動先のフォルダにファイルを追加してから移動元の所属情報を削除する
実際は削除が先で追加が後でも問題なく動作されるため、なぜか?と疑問に思う方もいると思います。プログラムというものは完璧ではありませんので、途中で何らかの原因でエラーが発生する場合があります。そのエラーの原因はいろいろな可能性があるのですが、もしエラーが発生した場合に上記コードのaddFileとremoveFileが出てくる順番が逆だったらどうなるでしょうか?
答えは、万が一処理途中でエラーが発生した場合にどこにもフォルダ所属情報を持たない『孤立したファイル』が出来上がってしまうという危険性があります。『孤立したファイル』の説明は、removeFile()の紹介ページにて軽く説明をしてありますが、こちらのページでも説明したいと思います。
『孤立したファイル』とは、所属するフォルダ情報がなくなりどこのフォルダにも格納されていない状態のファイルのことを指しています。フォルダ情報がなくなった場合、Googleドライブ上では通常のファイルにアクセスするようにフォルダを辿ってファイルにアクセスすることができなくなります。この原因は、フォルダへの所属情報がファイルから削除されているため、どこのフォルダにもこのファイルは保存されていないということが原因となります。
もし移動先にファイルを追加する前に移動元のフォルダからの所属情報を削除してしまうと、移動元のフォルダから所属情報を削除した直後にエラーが発生した場合にどのフォルダにも所属していないファイルが出来上がり、そのことに気が付かない場合もありますし、気づいたとしてもファイルの検索が非常に面倒であったりとしますので、そのような状況を避けるためにも最初に移動先に追加してから移動元の情報を削除することオススメします。
私も以前何度に何度かこの問題でハマったことがありましてファイルの救出に無駄な時間を費やしたことがあります。そのようなことにならないように、私の経験則を記事に致しました。フォルダの移動時に利用するaddFolderとremoveFolderについても同じことが言えますので、フォルダを移動する際にも最初に追加、後で削除という順番を覚えておきましょう。