シートにGoogleドライブのファイル(URL)を記載すると、そのファイルを削除してくれるGoogle Apps Scriptです。
スプレッドシートがあればOKです。
削除したいURLが入力されているセル範囲を選択します。
前回作成した「ドライブ上の同名のファイルを検索する」で見つかった不要ファイルを消してみます。
ここでは1列だけ選んでいますが、URLを含まないセルを含んでしまっても問題ありません。
上のメニューにある「スクリプト実行」から「選択範囲のURL(Googleドライブファイル)を削除する」を実行します。
選択範囲のURLがGoogleドライブファイルかどうかをチェックし、削除してもよいか確認メッセージが表示されます。
最終更新日とファイル名が表示されます。
キャンセルを押すと処理を中止します。
しばらく待つと削除処理が完了します。
といってもシート上では特に変化はありませんので、ファイルを開いてみます。
「ファイルはゴミ箱にあります」と出たので問題なさそうです。
セルの選択範囲に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);
}
}
指定したフォルダ内のすべてのファイルに、プレフィックス(接頭辞)を付与するGoogle Apps Scriptです。例えばスマホで撮影した写真のファイル名に「yyyy/mm/dd 運動会_元のファイル名.jpg」のように変更することができます。
フォルダ内のすべてのファイルを対象に、ファイル名の一部を消すことが出来るGoogle Apps Scriptです。ドライブでファイルのコピーをすると「のコピー」が付与されますがこのような文字列を消すことができます。
ファイル名の先頭にファイルの作成日を追加するGoogle Apps Scriptです。ドライブのファイル一覧で表示されるのは「最終更新日」だけで、作成日は各ファイルをクリックして右ペインを見ないとわかりません。わからないならファイル名に追加してしまおうというスクリプトです。「yyyy-mm-dd_元のファイル名」のように変えることができます。
最終更新日時からN時間以上経過したファイルを削除するGoogle Apps Scriptです。GASが自動的に吐き出すログファイルや、不要なファイルの一括削除に使えます。「削除」といってもゴミ箱へ移動する処理なので、誤って実行しても復元が可能です。
指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。最終更新日時やオーナー、URLも出力するのでフォルダ整理する時に使えるかも。
指定したファイルを指定した回数だけコピーするGoogle Apps Scriptです。テンプレートを受講者分コピーしたいときなどに。
シートに記載したファイルURLを元に、親フォルダの名前とURLを出力するGoogle Apps Scriptです。
Googleドライブ上でファイル名が重複しているものを探すGoogle Apps Scriptです。同じ名前のファイルに苦しめられている方、いかがですか?
指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。子フォルダ(サブフォルダ)も再帰的に探して一覧を出力します。