我需要能夠從驅動器內的檔案夾中獲取所有檔案并將資料輸入到電子表格中。我還創建了一個選單選項卡,因此我可以直接運行腳本而無需進入編輯器。如果我可以創建一種方法來輸入現有檔案夾名稱的名稱,而不必總是轉到腳本以執行該額外步驟,那就太好了。這是我正在使用的腳本。我真的需要這方面的幫助。
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')
uj5u.com熱心網友回復:
據我了解,您正在嘗試為這行代碼找到解決方案,您目前必須手動輸入 Id。
DriveApp.getFolderById("")
我的建議是提示用戶輸入檔案夾 ID,因為如果多個檔案夾具有相同名稱,則提示輸入檔案夾名稱可能會導致錯誤。我的建議執行如下:
const folderId = SpreadsheetApp.getUi().prompt("Please enter the Folder Id").getResponseText()
const folder = DriveApp.getFolderById(folderId)
您還可以使用 Google 檔案/檔案夾選擇器(如此處所述)來搜索和選擇檔案夾。
uj5u.com熱心網友回復:
嘗試這個:
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352322.html
