因此,此函数获取一个文件夹,获取子文件夹,将一些信息推送到数组,然后将该数组粘贴到我的电子表格中。
它在大约2-5%的时间里发生了奇怪的故障,而我为更早发现错误而进行的尝试都行不通。为什么/如何!
function getFileCount(gdrive,level,fullpath){
var folder = DriveApp.getFolderById(gdrive);
var fileCount = 0;
//append the subfolders to the sheet
var folders = folder.getFolders();
var result = [];
while (folders.hasNext()){
var folder = folders.next();
var path = fullpath + " > " +folder.getName();
result.push([(level+1),folder.getId(), path,"?"]);
}
if (result == []) return fileCount;
if (result == undefined) {console.log("Why the hell is it undefined?"+folder.getName()); return fileCount;}
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getSheetByName("FoldersPlusCounts");
var end = ss.getLastRow()+1;
try{ss.getRange(end, 1,result.length, result[0].length).setValues(result);}catch(e){console.log(e+" "+gdrive+" ["+result+"]");return -1;}
if (result.length > 0) SpreadsheetApp.flush();
return fileCount;
}
try catch语句失败的地方是:
TypeError:无法读取未定义的1dmDV2qdnU2Qqrg6mr-sxD8JaQncTUNqn的属性'length'[]
我不认为这种情况不会在文件夹没有文件时或每次没有文件夹时发生。
因此,如何能结果有时是未定义的,当它被明确定义为结果= [],并且如果它是未定义的,为什么是不是被捕获的“如果结果==未定义”行?
为了清楚起见,删除了一些行(只是文件计数),无论如何我都没有在那部分使用结果。
在脚本中,result
被声明为var result = [];
。并与result
进行比较[]
。
在这种情况下,使用Javascript将对象作为参考进行比较。由此,result == []
始终是false
。为了确认是否result
是[]
里面是空的,怎么样以下修改?
result == []
result.length == 0
要么
!result.length
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句