剛好最近有一個需求,就是盤點公司部門內 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 如何產出
1. // 您的 Google Drive 資料夾的 ID
var folderId = "XXXXXXXXXXXXXXXXXXXXXXX"
2. // 您的 Google Sheet 的 ID
var sheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXX"
3. targetSheet.getRange(1, 1, 1, 2).setValues([["檔案路徑", "SOP 名稱"]]); // 在A1和B1格中输入欄位名稱
直接開啟 Drive 然後看上面的 URL 字串,同理 Google Sheet ID 也是一樣
Step5. 按下儲存後,執行就會產出此 Google Drive 內的所有文件於 Google Sheet 上方便你做盤點的動作