Googleドライブにあるファイルを移動するので、ファイルリストを作成しようと思ったのですが、階層が深すぎて手動で取得するのは大変だったので、プログラムで取得しました。
親フォルダ、子フォルダからファイルを一括取得するコードは検索できるのですが、階層が深いフォルダに対し再帰的に取得するコードがなかったので、上げておきます。
自分を自分で呼び出している関数なので、作りとしてプログラミングのお作法から外れてるのが反省点。
function main() { // 書き出しシート取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォルダ一括取得"); // 書き出しシートクリア const lastRow = sheet.getLastRow(); const lastCol = sheet.getLastColumn(); let rangeList = sheet.getRange(2, 1, lastRow, lastCol); rangeList.clearContent(); // 取得したフォルダ名とIDを格納 let list = []; // 最上位のフォルダを指定 const folder_id = 'xxxxxxxxxxxxxxxxxxxxxxx'; // フォルダIDを指定 let base_folder = DriveApp.getFolderById(folder_id); // 最上位フォルダのファイルを取得 let files = base_folder.getFiles(); while (files.hasNext()) { //1つ取り出し const file = files.next(); // ファイル名、IDを取得 list.push(["ファイル", file.getName(), file.getUrl()]); } // 子フォルダ取得 const folders = base_folder.getFolders(); if (folders.hasNext()) { list = getFoldersRecursive(folders, list); } // 書き出しシートの書き出し開始位置 const row_idx = 2; const col_idx = 1; let range = sheet.getRange(row_idx, col_idx, list.length, list[0].length); // 対象の範囲にまとめて書き出し range.setValues(list); } function getFoldersRecursive(folders, list) { while (folders.hasNext()) { //1つ取り出し const folder = folders.next(); // フォルダ名、URLを取得 list.push(["フォルダ", folder.getName(), folder.getUrl()]); // 指定フォルダのファイル一括取得 let files = folder.getFiles(); while (files.hasNext()) { //1つ取り出し const file = files.next(); // ファイル名、IDを取得 list.push(["ファイル", file.getName(), file.getUrl()]); } const child_folders = folder.getFolders(); // 再帰的に実行 list = getFoldersRecursive(child_folders, list); } return list; }