顯示具有 appscript 標籤的文章。 顯示所有文章
顯示具有 appscript 標籤的文章。 顯示所有文章

2023年9月27日 星期三

[GWS] 透過 App Script 你也可以完成的 Google Drive 盤點大法

 剛好最近有一個需求,就是盤點公司部門內 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 上方便你做盤點的動作