Google Apps Script(GAS)でGoogleドライブのファイルを削除方法(ゴミ箱に移すsetTrashed)
Google Apps Script(GAS)を使ってGoogleドライブ上に存在するファイルを削除する方法を紹介します。
スプレッドシートやドキュメントから画像もGoogleドライブのゴミ箱に移動できます。
今回解説するsetTrashedメソッドとremoveFileの相違点も解説していきます。
Googleドライブはファイルが大量発生
GoogleドライブをGoogle Apps Script(GAS)で利用していると、ファイルがどんどん溜まってきます。
通常のパソコンファイルと違い、Googleドライブでは同じファイル名でも異なるIDとして両方存在することになります。
そのため、GASでファイルの自動生成などを行なっていると、大量のファイルができて閲覧性が低下します。
GASでGoogleドライブのファイルを削除
Google Apps Scriptでは、Googleドライブのファイル作成だけでなく、ファイル削除も実行することができます。
GASでファイル削除も実施することで、作成したファイルの整理を行うことができ、Googleドライブの管理画面をスッキリさせることができます。
Google Apps ScriptのsetTrashedメソッド
Google Apps Script(GAS)でGoogleドライブのファイルを削除するにはsetTrashedメソッドを使います。
以下のように記述することで、指定したファイルをゴミ箱に移すことができます。
DriveApp.setTrashed(file);
メソッドの名前にある通り、完全にファイルを削除するわけではなく、Googleドライブのゴミ箱に移すことになります。
そのため、もし、削除してしまったあとも、Googleドライブの管理画面からゴミ箱から復旧が可能です。
setTrashedのサンプルコード(ファイル削除)
GASのsetTrashedメソッドを利用したGoogleドライブのファイル削除のサンプルコードを解説します。
今回、「ドライブ削除テスト」というスプレッドシートを削除するGASのコードを解説します。
①ファイルIDが判明しているファイル、②ファイル名が分かるファイルの2パターンを紹介していきます。
①ファイルIDが判明しているファイルを削除
ファイルIDが判明している場合、DriveAppクラスのgetFileByIdメソッドを使い、ファイルを読み込み、取得したファイルでsetTrashedメソッドをtrueにします。
function delFileByID() {
//DriveAppクラスからファイルIDでファイル一意に取得する
var fileData = DriveApp.getFileById("1dGgQzS6ln_2us5I7QpTGOv2XxLvj3bYmhzSVKFmjAs4");
//IDから取得したファイルをゴミ箱のフラグをtrueにする
var getData = fileData.setTrashed(true);
}
②ファイル名が分かるファイルを削除
ファイルIDはわからず、ファイル名がわかる場合にも削除はできます。
function delFileByName() {
//DriveAppクラスからファイル名でファイル(ファイル名一致した分)を取得する
var fileData = DriveApp.getFilesByName("ドライブ削除テスト");
//next()でファイルを取得し、ゴミ箱のフラグをtrueにする
var getData = fileData.next().setTrashed(true);
}
この場合、ファイル名が同一のものの場合は、すべて削除されず1つずつ削除されていきます。
①、②のどちらのコードでも実行すると、指定したファイルがゴミ箱に移動されます。
まだこの状態では復元は可能で、ゴミ箱から復元を選べば元に戻すことができます。
Google Apps ScriptでもファイルIDを指定する形で「setTrashed」でfalseにすれば、ゴミ箱から元に戻せます。
このようにGASではゴミ箱に移すことだけが可能で、完全に削除することはできません。
setTrashedとremoveFileとの違い・相違点は?
なお、Google Apps Scriptには、removeFileというメソッドも用意されています。
setTrashedとremoveFileには違いがあり、使い方が異なります。
setTrashedメソッドでは引数のファイルをゴミ箱に移すのに対し、removeFileはファイル削除ではなく、ファイルの関係を削除するという意味です。
Googleドライブのフォルダ表示から消えるだけで、removeFileではファイル自体は削除はすることができません。
ファイル削除という意味ではsetTrashedメソッドを使うようにしましょう。
まとめ・終わりに
今回、Google Apps Script(GAS)でGoogleドライブのファイルをゴミ箱に移す(ファイル削除)方法を解説しました。
GASではsetTrashedメソッドを使い、引数を指定したファイルをゴミ箱に移すことができます。
GASを使っていると、Googleドライブのファイルをたくさん生成してしまうことがあります。
setTrashedメソッドを使うことでGoogleドライブのファイルをゴミ箱に移し、削除するようにしましょう。
ディスカッション
コメント一覧
すばらしい投稿、誠にありがとうございます。
本当に助かります。
試してみたのですが、下記のようなエラーが発生してしまいました。
ネットで色々原因を調べてみたのですが、同じような事例を見つけることができませんでした。
もしよろしければ解決方法についてご教示頂くことできますでしょうか?
Exception: Access denied: DriveApp.
mySample38_3 @ コード.gs:3
やすひろ様
コメントありがとうございます。
上記エラーですが、「Access denined」というエラーは削除しようとしたファイルにアクセス権限がないという場合に出るエラーです。
恐らく操作したGoogleドライブのファイルがゴミ箱に移す操作ができない権限だったと推測されます。
一度、ゴミ箱に移そうとしたGoogleドライブのファイルの権限がオーナー権限になっているか確認いただけますでしょうか?
yamamoto様、
さっそくのお返事本当にありがとうございました。
ご指摘頂いたとおり、ファイルの権限がオーナー権限になっていませんでした。
削除したいファイルはエクセルなのですが、共有を開いてオーナーではなく、編集者になっていました。
オーナーにしようと思ったのですが、できませんでした。
もう少しネットで調べてみようと思います。
本当にありがとうございました。
やすひろ様
ご確認ならびにご返信ありがとうございます。
オーナー権限については編集者では変更できず、そのファイルのオーナーユーザーのみ変更可能です。
そのため、オーナー権限のユーザーの方に連絡いただき、変更いただければと思います。
※なお、Google Workspaceの有料アカウントの場合、オーナー権限を変更できるのは同じグループ内の制約があったり、そもそもオーナー権限を移譲できない設定等ありますのでご注意ください。