指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。子フォルダ(サブフォルダ)も再帰的に探して一覧を出力します。
特にありません。今お使いのスプレッドシートに組み込めます。
指定したフォルダにあるファイルを、スプレッドシート上にリストアップします。
フォルダの中にある子フォルダの中も再帰的に探します。
ファイル名に加え、フォルダ名、最終更新日時、オーナー、ファイルのURLも出力します。
このスクリプトはA1セルを起点にファイルリストを出力します。新しいシートを作成することをおすすめします。
上のメニューに有る「スクリプト実行」から「Googleドライブからファイル一覧を取得する(再帰的)」を実行します。
ファイルリストを取得したいGoogleドライブのフォルダのURLを入力してください。
入力できるのは1つのURLだけです。
しばらく待つと一覧が出力されるはずです。
このスクリプトは処理時間が長めです。
200個ほどのファイルリストを出力するのに数十秒かかります。
ファイル数が非常に多いフォルダを指定すると、GASの実行時間上限(360秒)にひっかかるかもしれません。
その時は、親フォルダではなく子フォルダを指定して分割実行するなどで回避してください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00160/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('Googleドライブからファイル一覧を取得する(再帰的)', 'export_file_list_recursive');
// メニューを画面に追加する
menu.addToUi();
}
function export_file_list_recursive() {
// UIの取得
const ui = SpreadsheetApp.getUi();
// アクティブなスプレッドシート、シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 対象のGoogleドライブのURLを入力させる
const input = ui.prompt('GoogleドライブフォルダのURLを入力してください', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (input.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// フォルダのURLを取り出す
const url = input.getResponseText();
// フォルダURLからID部分を取得する
const folder_id = url.replace(/^https:.*folders\//, '');
// フォルダ内のファイルを再帰的に取得する
let file_list = get_files_recursive(folder_id);
// 項目名を追加する
file_list.unshift(['フォルダ名', 'ファイル名', '最終更新日時', 'オーナー', 'URL']);
// 書き込む内容に応じた書き込み範囲を定義
const range = sheet.getRange(1, 1, file_list.length, file_list[0].length);
// シートへの書き込みを実行
range.setValues(file_list);
}
function get_files_recursive(folderId) {
// 引数に与えられたフォルダIDからフォルダオブジェクトを取得
const folder = DriveApp.getFolderById(folderId);
// 結果(ファイル一覧)を格納する変数を宣言
let result = [];
// フォルダ内のファイルを取得
let files = folder.getFiles();
// ファイルが有る限りループ
while (files.hasNext()) {
let file = files.next(); // ファイルを取得
let filename = file.getName(); // ファイル名を取得
let last_modified = file.getLastUpdated(); // ファイルの最終更新日を取得
let owner = file.getOwner().getEmail(); // ファイルのオーナーのメールアドレスを取得
let file_url = file.getUrl(); // ファイルのURLを取得
let folder_name = folder.getName();
// 結果の配列にファイル情報を追加する
result.push([folder_name, filename, last_modified, owner, file_url]);
}
// フォルダ内のサブフォルダを再帰的に処理
const subfolders = folder.getFolders();
// フォルダが存在する限りループする
while (subfolders.hasNext()) {
// サブフォルダを取得
let subfolder = subfolders.next();
// サブフォルダ内のファイルを取得するため自分自身(関数)を呼び出し
let subfolder_files = get_files_recursive(subfolder.getId());
// 結果の配列に追加
result = result.concat(subfolder_files);
}
// メイン関数に対してファイルリストを返す
return result;
}
指定したフォルダ内のすべてのファイルに、プレフィックス(接頭辞)を付与する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ドライブのファイル(URL)を記載すると、そのファイルを削除してくれるGoogle Apps Scriptです。