フォルダからファイルの所属を解除する— removeFile()
※『Googleドライブのショートカット機能追加と複数フォルダ所属機能の終了』の記事で記載の通り、2020年9月30日をもって本記事で紹介しているremoveFileは非推奨となりました。
今回紹介するメソッドは、Googleドライブのフォルダからファイルの所属を解除する方法をご紹介します。今回の記事では、前回のaddFileの記事に引き続き、Googleドライブでのフォルダやファイルの格納される仕組みについての追記を少しご紹介したいと思います。
Googleドライブのフォルダやファイルは、Windowsなどのフォルダやファイルと考え方が大きく違う部分があるという話をaddFileの記事ではお伝えしました。前回の記事では、Googleドライブのフォルダ/ファイルとWindowsのフォルダ/ファイルの性質の違いと1つのファイルを複数のフォルダに所属させる方法をご紹介しました。
今回の記事では、複数のフォルダに所属させたフォルダ/ファイルの所属を手動で解除する方法もご紹介しようと思っていますので、前回も利用したスクリーンショットを使ってご説明します。
さて、本記事のメイン部分のお話に移りたいと思います。
addFileと同じように、removeFileはDriveApp.removeFile()という使い方と、Folder.removeFile()という使い方の2つあります。これの使い方は全く同じでフォルダを指定するかしないかという違いだけになります。
DriveApp.removeFile()の場合は、フォルダを指定しない方法ですのでマイドライブからファイルの所属情報が解除されます。Folder.removeFile()の場合は、Folderで指定されたフォルダからファイルの所属が解除されます。
『 引数に入れる値 』
removeFile(child)
//マイドライブからファイルの所属を解除するプログラム function sampleCode1() { var fileId = ""; //ファイルIDを指定 var child = DriveApp.getFileById(fileId); DriveApp.removeFile(child); }
『 変数の説明 』
fileId = マイドライブから所属を解除したいファイルIDを指定
child = マイドライブから所属を解除したいファイル
ファイルIDを確認する方法は、いくつかありますが、簡単なのはファイルを右クリックして「共有可能なリンクを取得」で取得できるURL「https://drive.google.com/open?id=1ZDvGxjJxpIWDb0UGpLjpuZE0tLT7_rIVWH0bQPlxop4」の赤文字部分がID部分になります。
スクリプトができたら▶ボタンでプログラムを実行してみましょう。所属を解除予定のファイルにはマイドライブへ追加をしておいて下さい。実行が完了するとマイドライブからファイルIDで指定したファイルの所属が解除されていると思います。マイドライブに移動して確認するか、ファイルの詳細情報を確認してみて下さい。詳細情報が表示されていない場合は、下記スクリーンショットのアイコンをクリックすると表示することができます。
詳細情報を確認すると、マイドライブにファイルが追加されていることが確認できると思います。
//指定したフォルダからファイルの所属を解除するプログラム function sampleCode2() { var folderId = ""; //解除予定のフォルダIDを指定して下さい var folder = DriveApp.getFolderById(folderId); var fileId = ""; //ファイルIDを指定 var child = DriveApp.getFileById(fileId); folder.removeFile(child); }
『 変数の説明 』
folderId = 所属を解除したいフォルダIDを指定
folder = 解除予定のフォルダ
fileId = 所属を解除したいファイルIDを指定
child = 解除予定のファイル
フォルダIDを確認する方法は、いくつかありますが、簡単なのはフォルダを開いた時のURL「https://drive.google.com/drive/folders/1wSmjp4v1S9lEg_PpsouIqLlMqOYu6Bhg」の赤文字部分がID部分になります。
サンプルコード2では指定したフォルダからファイルの所属を解除するコードになります。解除予定のファイルは解除予定のフォルダに所属している状態で実行して下さい。実行が完了するとファイルの詳細情報からもパスにフォルダがなくなっていることが確認できると思います。
ちなみに、所属するフォルダが1つしかない状態でremoveFileを使ってそのフォルダからの所属情報を解除しようとどうなるでしょうか?その結果は以下のスクリーンショットなります。
パスの表記がどこにもありません。1つしかフォルダ情報がない場合に、そのフォルダからの所属を解除するとどこのフォルダにも所属しないフォルダ/ファイルが出来上がります。冒頭では手動では最後のフォルダ所属情報を削除することはできないとお話しましたが、プログラムでは最後のフォルダ情報も含めて解除することができます。この状態はGoogleドライブ上にはファイルは存在しているが、どこのフォルダにも所属していないというGoogleドライブ上でフワフワと孤立した状態のファイルが出来上がっています。この状態のファイルにアクセスするには少し工夫が必要なのですが、そのアクセス方法は3つあります。
アクセス方法を知らない方にはこの孤立したファイルにアクセスすることが非常に困難になりますので、複数人でアカウントを共有している場合において、他の共有者からファイルを隠したいといった要望を叶える際に活用できる方法かもしれません。
プログラムですべてのフォルダ所属情報を削除する方法以外にも、ファイルが所属フォルダがなくなってしまい孤立状態になってしまう場合があります。それは共有しているファイルで、オーナー以外がファイルを削除した時に起こる可能性があります。もしオーナー以外が削除したファイルが当該ファイルが保存されているフォルダ以外にない場合はフォルダの所属情報がすべてなくなりなくなり同じような孤立したファイルが出来上がってしまうという状況になります。
フォルダの所属情報を失ったファイルへアクセスする方法は下記の通り。
- ファイル名あるいは記載されている内容から検索する
- 「is:unorganized owner:me」で検索する
- ファイルURLで直接アクセスする
この3通りでしかフォルダへの所属情報を解除されたフォルダ/ファイルへアクセスする方法はないと思います。
フォルダ情報が削除されたからと言ってもGoogleドライブからは削除されていないため、ファイル名やファイルの中身に記載されている文字列で検索にヒットします。その検索結果からアクセスするという方法が1の方法です。
2の方法は、知らない方も少なくないと思いますが、フォルダへの所属情報を失ったフォルダ/ファイルを検索する検索コマンドです。こちらを利用すれば所属情報がなにもないファイルが検索結果に表示されます。ただし、フォルダ所属がないフォルダ/ファイルがある場合はこちらの方法ではエラーが出て検索ができなくなります。Google公式ヘルプに小さく表記がされていますのでご確認下さい。「孤立したファイルを検索する」という部分になります。
3の方法はURLをご存知であればアクセスができます。
孤立したファイルは探すのに少し手間がかかりますので、共有アクセス者からファイルを隠したい場合に活用することができます。
まとめ
今回はGoogleドライブ上のフォルダ構成の仕組みの説明と、removeFile()メソッドの使い方をスクリーンショットとサンプルコードで説明をしました。Google Apps Scriptでファイルを他のフォルダに移動させる時に使うコードになりますが、removeFileだけではファイルを所属フォルダから解除させるだけなので、所属情報が削除されるだけで移動は完了することができません。ファイルを1つのフォルダから違うフォルダに移動させたい場合はaddFile()メソッドを併用して移動予定先のフォルダにファイルの所属情報を追加する必要があります。そのやり方はまた別の投稿で説明を行います。