この記事では、Googleドライブ上にあるファイルを削除するスクリプトを紹介します。
ファイルの削除だから「delete~~」のようなメソッドがあるかと思いきや・・・ないんですね。
そこで、「削除」に関する2つのメソッドを紹介します。
①ファイルを削除する
→Fileオブジェクト.setTrashedメソッド
②指定フォルダへのファイル追加を外す
→Folderオブジェクト.removeFileメソッド
Contents
ファイルを削除する
こちらが一般的な「削除」で、ファイルをゴミ箱に入れる処理です。setTrashedメソッドを使用します。
Fileオブジェクト.setTrashed(trashed)
- パラメータ:Boolean(trueを指定するとユーザーのドライブのゴミ箱に移動する)
- 戻り値:File
- 説明:ファイルがユーザーのドライブのゴミ箱にあるかどうかを設定します。ファイルを破棄できるのは所有者のみです。
- 公式リファレンスはこちら
サンプルスクリプトです。実行すると、指定のファイルがゴミ箱に移動します。
1 2 3 4 5 6 7 8 9 |
function setTrashedSample() { //削除したいファイルの「ファイルID」 const fileId = '********************'; const file = DriveApp.getFileById(fileId); file.setTrashed(true); } |
指定フォルダへのファイル追加を外す
フォルダとファイルの紐付けを外す(解除する)方法です。removeFileメソッドを使用します。
※Googleドライブでは、1つのファイルを複数フォルダに追加することができます(参考:【GAS】Googleドライブでファイルが追加されている全てのフォルダを取得する)
Folderオブジェクト.removeFile(child)
- パラメータ:File(removeするファイルを指定)
- 戻り値:Folder
- 説明:指定ファイルを指定フォルダから外します。この方法ではファイルは削除されませんが、ファイルがそのすべての親から削除されると、ファイルを検索するか「すべてのアイテム」ビューを使用しない限り、ドライブに表示できません。
- 公式リファレンスはこちら
サンプルスクリプトです。実行すると、「指定ファイルの指定フォルダへの追加」が外されます。※ファイルはゴミ箱に移動しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function removeFileSample() { //フォルダ追加を外したいファイルの「ファイルID」 const fileId = '********************'; const file = DriveApp.getFileById(fileId); //上のfileが追加されているフォルダを指定 const folderId = '********************'; const folder = DriveApp.getFolderById(folderId); folder.removeFile(file); } |
【まとめ】setTrashedメソッドとremoveFileメソッドの違い
「テストファイル」という1つのファイルが、フォルダA,B,Cの3つのフォルダに追加されている前提で、2つのメソッドの動作を比べてみましょう。
setTrashedメソッド(ファイルをゴミ箱へ)
「テストファイル」に対して、setTrashedメソッドを実行します。「テストファイル」がゴミ箱に移動されます。
removeFileメソッド(フォルダ追加を外す)
「フォルダA」に対して、removeFileメソッドを実行します。「フォルダA」と「テストファイル」の紐付けが解除されます。
removeFileメソッドのポイントは、「ファイル削除ではない」ことです。ファイル削除ではなく、「フォルダへのファイル追加を外す」だけです。
上記の例で、さらに、フォルダB,Cから「テストファイル」を外しても、「テストファイル」はゴミ箱にはいかず、「どのフォルダにも属さない幻のファイル」になります(ファイル検索で表示することができます)
以上です。違いを理解して、使い分けてみましょう!