GoogleAppScriptでGoogleDrive上のファイルを削除

GoogleAppScriptでGoogleDrive内のファイル/フォルダの基本的な操作はできるが
唯一、デフォルトのままではファイル/フォルダの完全削除はできない。

https://developers.google.com/apps-script/reference/drive/drive-app#removeFile(File)
removeXXX()は、ユーザのルートフォルダを含むすべての(親)フォルダから移動させ、見えなくするが
実際は消えておらず、全アイテムから検索すると見つけられる。
(しかもゴミ箱に入るわけではない)

完全に削除するにはGoogleDriveAPIを使う必要がある。
https://developers.google.com/drive/v3/reference/files/delete

今回こちらを参考に、GoogleAppScriptからGoogleDriveAPIを有効にし
ファイルを完全に削除する方法を試した。

GoogleDriveAPIの有効化

GoogleAppScriptのメニュー「リソース」>「Google の拡張サービス…」を選択
“Drive”の項目をOnにする。

すると、”これらのサービスを Google API コンソールでも有効にする必要があります。”とリンク付きで表示されるので、リンクをたどりAPIコンソールを開く。

別タブ等でAPIコンソールを開きつつ、メニューはOKを押して閉じる。

GoogleAPIコンソールから許可

Google API コンソールを開くとGoogle Cloud Platformで当該プロジェクトを開いた状態になっていると思うので
「ダッシュボード」>「APIとサービスの有効化」を選択。
検索窓に”Google Drive API”と入力し、GoogleDriveAPIを表示させ、選択、有効化する。

以上で準備は完了。

サンプルコードはこちら。
実行するとGoogleDriveにアップロードしたTEST.txtというファイルが完全に削除される。

function myFunction() {
  var iter = DriveApp.getFilesByName("TEST.txt");
  var file = null;
  while(iter.hasNext()) {
    file = iter.next();
    break;
  }
  Logger.log(file.getName() + " : " + file.getId());
  
  Drive.Files.remove(file.getId());
}

ゴミ箱に入るわけではなく完全に消えるので、扱いには注意が必要。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です