2022/09/18に更新

【GASで整理】URLリストを元にファイルをまとめて削除する

ドライブスプレッドシート

シートにGoogleドライブのファイル(URL)を記載すると、そのファイルを削除してくれるGoogle Apps Scriptです。

こんな悩みを解決します


  • 不要なファイルをリストアップしたが、ここから1個ずつ消していくのはめんどくさい

用意するもの


スプレッドシートがあればOKです。

このスクリプトで出来ること


  • スプレッドシートに記載されている「Googleドライブ上のファイルのURL」を削除します。
  • このスクリプトは、シート上の選択されている範囲のみを対象として動作します。
  • 削除前に確認メッセージ(ファイル名と最終更新日)を表示することができます。
  • ファイルはゴミ箱に移動するだけなので、間違って実行しても復元可能です。

使い方


1.スクリプトの実行

削除したいURLが入力されているセル範囲を選択します。
前回作成した「ドライブ上の同名のファイルを検索する」で見つかった不要ファイルを消してみます。
ここでは1列だけ選んでいますが、URLを含まないセルを含んでしまっても問題ありません。

上のメニューにある「スクリプト実行」から「選択範囲のURL(Googleドライブファイル)を削除する」を実行します。

選択範囲のURLがGoogleドライブファイルかどうかをチェックし、削除してもよいか確認メッセージが表示されます。
最終更新日とファイル名が表示されます。
キャンセルを押すと処理を中止します。

2.結果の確認

しばらく待つと削除処理が完了します。
といってもシート上では特に変化はありませんので、ファイルを開いてみます。
「ファイルはゴミ箱にあります」と出たので問題なさそうです。

セルの選択範囲にGoogleドライブファイルのURLが見つからない場合はこのようなメッセージを表示して処理を中止します。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00146/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('選択範囲のURL(Googleドライブファイル)を削除する', 'delete_drive_files_from_url');

  // メニューを画面に追加する
  menu.addToUi();
}


function delete_drive_files_from_url() {

  // プロンプトやアラートを表示するためUIオブジェクトを取得
  const ui = SpreadsheetApp.getUi();

  // シート内の選択範囲を取得する
  const range = SpreadsheetApp.getActiveRange();

  // 範囲内の値を取得する
  const values = range.getValues();

  // 削除対象のURLを格納する変数を用意
  const delete_candidate = [];

  // 1セルずつループで処理していく
  for (let i = 0; i < values.length; i++) { // 行のループ

    for (let j = 0; j < values[i].length; j++) { // 列のループ

      // GoogleドライブファイルのURLフォーマットなら
      if (values[i][j].match(/https:\/\/(docs|drive).google.com\/.*\/d\/.*$/)) {

        // ファイルのIDを取得する
        let file_id = values[i][j].match(/^.*\/d\/(.*)\/.*$/)[1];

        // IDからファイルオブジェクトを取得する
        let file = DriveApp.getFileById(file_id);

        // ファイル名を取得する
        let file_name = file.getName();

        // ファイルの最終更新日を取得し、整形する
        let file_updated = Utilities.formatDate(file.getLastUpdated(), 'JST', 'yyyy/MM/dd');

        // 削除候補として配列に追加する
        delete_candidate.push([file_id, file_updated, file_name]);

      }
    }
  }

  // 候補が1件も無い場合(セルの選択範囲にGoogleドライブファイルが無い)は処理を中止する
  if (delete_candidate.length == 0) {
    ui.alert('GoogleドライブのファイルURLが見つかりませんでした');
    return;
  }

  // 確認メッセージを用意
  let confirm_message = '下記ファイルを削除します。よろしいですか?\n\n[最終更新日] [ファイル名]\n';

  // メッセージに削除候補のファイル情報を追記する
  for (let i = 0; i < delete_candidate.length; i++) {

    confirm_message += delete_candidate[i][1] + ', ' + delete_candidate[i][2] + '\n';

  }

  // 削除実行の確認メッセージを表示
  const response = ui.alert('削除の確認', confirm_message, ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたら何もせず終了
  if (response == ui.Button.CANCEL) {
    return;
  }

  // 1ファイルずつ削除を実行
  for (let i = 0; i < delete_candidate.length; i++) {

    // ファイルをゴミ箱へ移動する
    DriveApp.getFileById(delete_candidate[i][0]).setTrashed(true);

  }

}

関連するアプリ


【GASで時短】ファイル名に文字列を追加する

指定したフォルダ内のすべてのファイルに、プレフィックス(接頭辞)を付与するGoogle Apps Scriptです。例えばスマホで撮影した写真のファイル名に「yyyy/mm/dd 運動会_元のファイル名.jpg」のように変更することができます。

【GASで時短】ファイル名の一部を削除する

フォルダ内のすべてのファイルを対象に、ファイル名の一部を消すことが出来るGoogle Apps Scriptです。ドライブでファイルのコピーをすると「のコピー」が付与されますがこのような文字列を消すことができます。

【GASで時短】ファイル名に作成日を追加する

ファイル名の先頭にファイルの作成日を追加するGoogle Apps Scriptです。ドライブのファイル一覧で表示されるのは「最終更新日」だけで、作成日は各ファイルをクリックして右ペインを見ないとわかりません。わからないならファイル名に追加してしまおうというスクリプトです。「yyyy-mm-dd_元のファイル名」のように変えることができます。

【GASで時短】更新からN時間以上経過したファイルを削除する

最終更新日時からN時間以上経過したファイルを削除するGoogle Apps Scriptです。GASが自動的に吐き出すログファイルや、不要なファイルの一括削除に使えます。「削除」といってもゴミ箱へ移動する処理なので、誤って実行しても復元が可能です。

【GASで時短】ドライブのファイルリストをスプレッドシートに出力する

指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。最終更新日時やオーナー、URLも出力するのでフォルダ整理する時に使えるかも。

【GASで時短】ファイルを指定回数コピーする

指定したファイルを指定した回数だけコピーするGoogle Apps Scriptです。テンプレートを受講者分コピーしたいときなどに。

【GASで時短】ファイルの親フォルダを調べる

シートに記載したファイルURLを元に、親フォルダの名前とURLを出力するGoogle Apps Scriptです。

【GASで整理】ドライブ上の同名のファイルを検索する

Googleドライブ上でファイル名が重複しているものを探すGoogle Apps Scriptです。同じ名前のファイルに苦しめられている方、いかがですか?

【GASで時短】再帰的にドライブフォルダ内のファイルリストを出力する

指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。子フォルダ(サブフォルダ)も再帰的に探して一覧を出力します。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp