LANG SELRCT

コードを書く場所

2019年7月2日火曜日

Googleドライブのファイルを完全に削除したい(Drive API)


Googleドライブ内で同名ファイルをremoveする ではDriveAppのremoveを利用してフォルダから削除しました。

上記に書いた方法ではドライブ内から完全に削除することができません

ここではドライブから完全に削除するコードを書きます。
※完全削除なので復帰できなくなります

stackoverflowで回答されていましたが、Google Drive APIのリファレンスでは情報を見つけることができませんでした。



実行するためには 拡張サービスで Drive APIを有効にする必要があります。
Google Drive web APIを有効にする



コード.gs
function deleteFiles() {
  var FOLDER_ID = "ID";
  var FILE_NAME = "NAME";
  var folder = DriveApp.getFolderById(FOLDER_ID);
  var contents = folder.getFilesByName(FILE_NAME);
  var ids = [];
  while(contents.hasNext()) {
    var file = contents.next();
    var id = file.getId();
    Drive.Files.remove(id)
  }
}


対象ファイルが入っているフォルダIDを"ID"に入れて
対象のファイル名を"NAME"に入れて
deleteFiles()を実行すると完全に削除されます。

※この方法では対象のフォルダ内にある対象のファイル名のファイルIDを取得してそのすべてを完全に削除します。ファイルを完全に削除するため、同一IDのファイルが複数のフォルダに追加されている場合、すべてのフォルダから削除されて復帰できなくなります。

この方法で実行する際は、十分にテストして意図した削除であるか確認しましょう。


参考

Files: delete
https://developers.google.com/drive/api/v2/reference/files/delete

Google apps script : How to Delete a File in Google Drive?
https://stackoverflow.com/questions/14241237/google-apps-script-how-to-delete-a-file-in-google-drive

Google Drive web APIを有効にする
http://www.pre-practice.net/2019/01/google-drive-web-api.html

削除されたファイルや共有ドライブを復元する
https://support.google.com/a/answer/7376096?hl=ja