Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement google应用程序脚本统计文件夹中的文件数_If Statement_Google Apps Script_Count_Google Drive Api - Fatal编程技术网

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

我已经搜索过了,但似乎找不到我要找的东西

我正在寻找使我能够执行此伪代码的代码:

  • 计算特定Google Drive文件夹中的文件数(按文件夹Id)
  • 如果文件计数高于“x”,请执行此操作{其他代码片段}
  • 否则,退出

  • 有人能帮我吗?

    我找不到任何方法来计算文件的数量,所以我想你需要遍历每个文件,并设置一个计数器:

    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规范不保证每个页面都会满。