再會。我在 Google Apps 腳本中遇到問題。當我在應用程式腳本中運行我的函式時,它作業正常,但是當我在觸發器中添加它時,這個錯誤總是在第一次運行時發生。
TypeError: folder.getFiles is not a function
這是代碼。我使用此代碼獲取所有檔案夾和子檔案夾中的所有檔案。
var level=0;
function getFnF(folder) {
var folder= folder || DriveApp.getFolderById('root folder ID');
var ss=SpreadsheetApp.openById('google sheet ID');
var sh=ss.getSheetByName('List');
var files=folder.getFiles();
while(files.hasNext()) {
var file=files.next();
var fileid = file.getId();
var TimeStamp = Utilities.formatDate(new Date(), "GMT 8", "MMMM dd, yyyy HH:mm:ss")
var filesize = file.getSize()/ 1024 / 1024;
var lastrow = sh.getLastRow();
var filename =file.getName();
sh.appendRow([TimeStamp,lastrow,filename,file.getName(),filesize.toFixed(2),fileid);
Logger.log('Item added in list: [' lastrow "] " filename);
}
var subfolders=folder.getFolders()
while(subfolders.hasNext()) {
var subfolder=subfolders.next();
//subfolders only
level ;
getFnF(subfolder);
}
level--;
}
我希望你能幫助我。
uj5u.com熱心網友回復:
從When I run my function in apps script its working fine but when I add it in a trigger this error always occurs in first run.,我不確定觸發器的型別。但是當函式由觸發器運行時,事件物件被賦予第一個引數。那么,在這種情況下,下面的修改呢?
修改后的腳本:
var level = 0;
function getFnF(e, folder = DriveApp.getFolderById('root folder ID')) {
var ss = SpreadsheetApp.openById('google sheet ID');
var sh = ss.getSheetByName('Sheet1');
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileid = file.getId();
var TimeStamp = Utilities.formatDate(new Date(), "GMT 8", "MMMM dd, yyyy HH:mm:ss")
var filesize = file.getSize() / 1024 / 1024;
var lastrow = sh.getLastRow();
var filename = file.getName();
sh.appendRow([TimeStamp, lastrow, filename, file.getName(), filesize.toFixed(2), fileid]);
Logger.log('Item added in list: [' lastrow "] " filename);
}
var subfolders = folder.getFolders()
while (subfolders.hasNext()) {
var subfolder = subfolders.next();
//subfolders only
level ;
getFnF(e, subfolder);
}
level--;
}
通過這種修改,當函式
getFnF被觸發時,函式作為初始值運行folder。DriveApp.getFolderById('root folder ID')順便說一句,當您想從另一個函式而不是觸發器運行此函式時,請將其稱為
getFnF("dummy", folder).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441626.html
標籤:谷歌应用脚本
上一篇:降低腳本的處理成本
