簡體   English   中英

嘗試將文件夾中的所有谷歌表格文件導入電子表格,所有列標題都相同

[英]Trying to import all google sheets files within a folder to a spreadsheet, all column headers are the same

我需要能夠從驅動器內的文件夾中獲取所有文件並將數據輸入到電子表格中。 我還創建了一個菜單選項卡,因此我可以直接運行腳本而無需進入編輯器。 如果我可以創建一種方法來輸入現有文件夾名稱的名稱,而不必總是轉到腳本以執行該額外步驟,那就太好了。 這是我正在使用的腳本。 我真的需要這方面的幫助。

function importTimesheets() {
 var spreadsheets = DriveApp.
   getFolderById("").
   getFilesByType(MimeType.GOOGLE_SHEETS);

 var data = [];
 while (spreadsheets.hasNext()) {
   var currentSpreadsheet = SpreadsheetApp.openById(spreadsheets.next().getId());
   data = data.concat(currentSpreadsheet   
                        .getSheetByName('Timesheet')
                      .getRange("A3:L10")
                        .getValues()
                          );
 }

 SpreadsheetApp.
   getActiveSheet().
   getRange(1, 1, data.length, data[0].length).
   setValues(data);
}


function onOpen() {
 var ui = SpreadsheetApp.getUi();
 ui.createMenu('Generate Timesheets')
     .addItem('Generate', 'importTimesheets')

據我了解,您正在嘗試為這行代碼找到解決方案,您目前必須手動輸入 Id。

   DriveApp.getFolderById("")

我的建議是提示用戶輸入文件夾 ID,因為如果多個文件夾具有相同名稱,則提示輸入文件夾名稱可能會導致錯誤。 我的建議執行如下:

const folderId = SpreadsheetApp.getUi().prompt("Please enter the Folder Id").getResponseText()
const folder = DriveApp.getFolderById(folderId)

您還可以使用 Google 文件/文件夾選擇器(如此處所述)來搜索和選擇文件夾。

嘗試這個:

var level=0;
function getFnF(folder = DriveApp.getRootFolder()) {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1')
  const files=folder.getFilesByType(MimeType.GOOGLE_SHEETS);
  while(files.hasNext()) {
    let file=files.next();
    let firg=sh.getRange(sh.getLastRow() + 1,level + 1);
    firg.setValue(Utilities.formatString('File: %s', file.getName()));//need editing
  }
  const subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    let subfolder=subfolders.next();
    let forg=sh.getRange(sh.getLastRow() + 1,level + 1);
    forg.setValue(Utilities.formatString('Fldr: %s', subfolder.getName()));//needs editing
    level++;
    getFnF(subfolder);
  }
  level--;
}

function runThisFirst() {
  let r = SpreadsheetApp.getUi().prompt('Folder id','Enter Folder Id',SpreadsheetApp.getUi().ButtonSet.OK);
  let folder = DriveApp.getFolderById(r.getResponseText())
  getFnF(folder);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM