Google Apps Script

【GAS】Googleドライブの指定フォルダのファイルを削除する(setTrashed/removeFile)

この記事では、Googleドライブ上にあるファイルを削除するスクリプトを紹介します。

ファイルの削除だから「delete~~」のようなメソッドがあるかと思いきや・・・ないんですね。

そこで、「削除」に関する2つのメソッドを紹介します。

①ファイルを削除する
→Fileオブジェクト.setTrashedメソッド

②指定フォルダへのファイル追加を外す
→Folderオブジェクト.removeFileメソッド

ファイルを削除する

こちらが一般的な「削除」で、ファイルをゴミ箱に入れる処理です。setTrashedメソッドを使用します。

Fileオブジェクト.setTrashed(trashed)

  • パラメータ:Boolean(trueを指定するとユーザーのドライブのゴミ箱に移動する)
  • 戻り値:File
  • 説明:ファイルがユーザーのドライブのゴミ箱にあるかどうかを設定します。ファイルを破棄できるのは所有者のみです。
  • 公式リファレンスはこちら

サンプルスクリプトです。実行すると、指定のファイルがゴミ箱に移動します。

指定フォルダへのファイル追加を外す

フォルダとファイルの紐付けを外す(解除する)方法です。removeFileメソッドを使用します。

※Googleドライブでは、1つのファイルを複数フォルダに追加することができます(参考:【GAS】Googleドライブでファイルが追加されている全てのフォルダを取得する

Folderオブジェクト.removeFile(child)

  • パラメータ:File(removeするファイルを指定)
  • 戻り値:Folder
  • 説明:指定ファイルを指定フォルダから外します。この方法ではファイルは削除されませんが、ファイルがそのすべての親から削除されると、ファイルを検索するか「すべてのアイテム」ビューを使用しない限り、ドライブに表示できません。
  • 公式リファレンスはこちら

サンプルスクリプトです。実行すると、「指定ファイルの指定フォルダへの追加」が外されます。※ファイルはゴミ箱に移動しません。

【まとめ】setTrashedメソッドとremoveFileメソッドの違い

「テストファイル」という1つのファイルが、フォルダA,B,Cの3つのフォルダに追加されている前提で、2つのメソッドの動作を比べてみましょう。

setTrashedメソッド(ファイルをゴミ箱へ)

「テストファイル」に対して、setTrashedメソッドを実行します。「テストファイル」がゴミ箱に移動されます。

ファイルをゴミ箱に移動する

removeFileメソッド(フォルダ追加を外す)

「フォルダA」に対して、removeFileメソッドを実行します。「フォルダA」と「テストファイル」の紐付けが解除されます。

ファイル追加を外す

removeFileメソッドのポイントは、「ファイル削除ではない」ことです。ファイル削除ではなく、「フォルダへのファイル追加を外す」だけです。

上記の例で、さらに、フォルダB,Cから「テストファイル」を外しても、「テストファイル」はゴミ箱にはいかず、「どのフォルダにも属さない幻のファイル」になります(ファイル検索で表示することができます)

以上です。違いを理解して、使い分けてみましょう!