If statement google应用程序脚本统计文件夹中的文件数
我已经搜索过了,但似乎找不到我要找的东西 我正在寻找使我能够执行此伪代码的代码:If statement google应用程序脚本统计文件夹中的文件数,if-statement,google-apps-script,count,google-drive-api,If Statement,Google Apps Script,Count,Google Drive Api,我已经搜索过了,但似乎找不到我要找的东西 我正在寻找使我能够执行此伪代码的代码: 计算特定Google Drive文件夹中的文件数(按文件夹Id) 如果文件计数高于“x”,请执行此操作{其他代码片段} 否则,退出 有人能帮我吗?我找不到任何方法来计算文件的数量,所以我想你需要遍历每个文件,并设置一个计数器: function countFilesInFolder() { var count,file,files,theFolder;//Define variables without ass
有人能帮我吗?我找不到任何方法来计算文件的数量,所以我想你需要遍历每个文件,并设置一个计数器:
function countFilesInFolder() {
var count,file,files,theFolder;//Define variables without assigning a value
theFolder = DriveApp.getFolderById('your file ID');
files = theFolder.getFiles();
count = 0;
while (files.hasNext()) {
count++;
file = files.next();
//Logger.log(file.getName());
if (count > 5) {
fncNextFunction();
break;
};
};
Logger.log(count);
};
function fncNextFunction() {
Logger.log('fncNextFunction');
};
注意:如果我只是得到计数器增量而没有得到下一个文件,脚本编辑器将冻结
以下是使用高级驱动器服务的替代方法:
//This requires the Drive API To be turned on in the Advanced Google Services
function countFilesInFolder() {
var query = 'trashed = false and ' +
"'Your Folder ID here' in parents";
var filesInFolder = Drive.Files.list({q: query});
Logger.log('filesInFolder: ' + filesInFolder.items.length);
for (var i=0;i<filesInFolder.items.length;i++) {
//Logger.log('key: ' + key);
var thisItem = filesInFolder.items[i];
Logger.log('value: ' + thisItem.title);
};
};
//这要求在高级Google服务中打开驱动器API
函数countFileInfolder(){
var query='trashed=false和'+
“'Your Folder ID here'在parents中”;
var filesInFolder=Drive.Files.list({q:query});
Logger.log('fileinfolder:'+fileinfolder.items.length);
对于(var i=0;我不熟悉应用程序脚本,因此这可能是不正确的,但我可能会建议您查看高级驱动器服务。这样可以提高效率。首先,您可以指定要返回的文件属性,这将最大限度地减少需要发送的数据量,从而加快速度如果您实际上不需要任何属性,那么(我猜)您将获得一个空对象数组。其次,您可以简单地将数组计数添加到累加器中,然后对每个pagetoken重复,这样就不需要迭代文件对象。我使用高级驱动器服务为答案添加了一个替代方法。您没有循环nextpagetoken,因此最多只能看到100个文件。我将在回答中提到这一点。在搜索中没有指定maxResults
参数,因此它仍然会自动只获取100个文件吗?没错,但准确地说,它最多可以获取100个文件,因为api规范不保证每个页面都会满。