gasでgoogledriveの目次を作る
概要
以前利用していたものを流用してファイル数が多いフォルダに使ったら
タイムアウトしてしまい使えなくなったので
geminiさんに作ってもらいました。
これでもタイムアウトしますがデバッガを再起動すると続けて実行できました
時間はかかります。
修正を重ね中だがこのバージョンが今のところ一番いい。
コード
function listAllFilesInSharedFolder() {
// 共有フォルダのIDをここに設定
var sharedFolderId = "your_shared_folder_id";
// スプレッドシートのIDをここに設定
var spreadsheetId = "your_spreadsheet_id";
// スプレッドシートのシート名をここに設定
var sheetName = "ファイル一覧";
// スプレッドシートを取得
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName(sheetName);
// ヘッダー行を作成
sheet.appendRow(["ファイル名", "ファイルID", "リンク", "親フォルダ名", "最終更新日時"]);
// 再帰関数でフォルダ内を探索
function listFilesRecursive(folder, parentFolderName) {
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
sheet.appendRow([
file.getName(),
file.getId(),
file.getUrl(),
parentFolderName || "",
file.getLastUpdated()
]);
}
var folders = folder.getFolders();
while (folders.hasNext()) {
var subFolder = folders.next();
listFilesRecursive(subFolder, folder.getName());
}
}
// 共有フォルダをルートとして探索開始
var sharedFolder = DriveApp.getFolderById(sharedFolderId);
listFilesRecursive(sharedFolder, "");
}
プロンプト
GASで共有フォアルダの中身をすべてリスト化したいです。
条件
スプレッドシートを利用する
ファイル名とリンクを記載する
フォルダがあった場合にはその中身も記載してフォルダ名も記載する
親フォルダがある場合はそれも記載する
共有フォルダの中身は20000ファイル以上存在しており、GASがタイムアウトする可能性があるので考慮すること
コメント
コメントを投稿