剛好最近有一個需求,就是盤點公司部門內 Google Drive 的文件總表,由於資料散落在各個資料夾內,對於資料整理較為不便利,想透過一些方法來更快速的去撈取 Drive 內的所有資料以及他所在的目錄,剛好前陣子有在摸索 App Script 這個服務 ,身為工程師就是想把重工的事情透過自動化去完成,因此解決了這件事情
Step1 . 你需要在你想盤點的 Google Drive 內,新建一個 Google Sheet
Step2. 進入 Google Sheet 後,點選 擴充功能 > AppScript
Step3. 貼上我寫好的程式碼
// 您的 Google Drive 資料夾的 ID var folderId = "XXXXXXXXXXXXXXXXXXXXXXX"; // 您的 Google Sheet 的 ID var sheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; // 函數用於從 Google Drive 讀取文件名稱並寫入 Google Sheet function writeToSheet() { var folder = DriveApp.getFolderById(folderId); var sheet = SpreadsheetApp.openById(sheetId); var sheetName = "sheet1"; // 修改為您的 Google Sheet 工作表名稱 // 定義資料陣列,將名稱寫入 A 欄位和 B 欄位 var data = []; // 取得資料夾內的所有檔案和子資料夾 var files = folder.getFiles(); var subFolders = folder.getFolders(); // 建立用於記錄已處理檔案名稱的集合 var processedFileNames = new Set(); // 將資料夾的名稱和檔案的名稱添加到資料陣列,排除指定資料夾的檔案名稱 while (files.hasNext()) { var file = files.next(); if (!processedFileNames.has(file.getName())) { data.push([folder.getName(), file.getName()]); processedFileNames.add(file.getName()); } } // 遍歷所有子資料夾,並從中獲取檔案名稱,排除指定資料夾的檔案名稱 while (subFolders.hasNext()) { var subFolder = subFolders.next(); var subFiles = subFolder.getFiles(); while (subFiles.hasNext()) { var subFile = subFiles.next(); if (!processedFileNames.has(subFile.getName())) { data.push([subFolder.getName(), subFile.getName()]); processedFileNames.add(subFile.getName()); } } } // 檢查 `data` 陣列是否有任何檔案名稱。如果有,則將 `data` 陣列寫入 Google Sheet,從A2和B2格開始寫入 if (data.length > 0) { var targetSheet = sheet.getSheetByName(sheetName); targetSheet.clear(); // 清除工作表內容 targetSheet.getRange(1, 1, 1, 2).setValues([["檔案路徑", "SOP 名稱"]]); // 在A1和B1格中输入欄位名稱 targetSheet.getRange(2, 1, data.length, 2).setValues(data); } } // 呼叫函數以執行操作 function main() { writeToSheet(); }Step4. 貼上後有三個欄位需要修改, ID 如何產出