Google apps script 如果不满足第一个条件,则不执行任何操作的If语句

Google apps script 如果不满足第一个条件,则不执行任何操作的If语句,google-apps-script,Google Apps Script,我正忙着编写一个包含If语句的脚本,如果不满足第一个条件,我试图让语句的else部分什么也不做。该脚本检查google驱动器文件夹中的文件名,如果存在,则应运行第一个条件,否则,如果不存在,则不应执行任何操作 我尝试过使用else{return false;},else{},但都没有起作用。我也尝试过交换周围的条件,但也不起作用 我不断收到一个错误,说“异常:无法检索下一个对象:迭代器已到达末尾。(第7行,文件“调用”)”,因为一旦从文件中检索到数据,该文件就会被删除 第一个条件工作正常,但如果

我正忙着编写一个包含If语句的脚本,如果不满足第一个条件,我试图让语句的else部分什么也不做。该脚本检查google驱动器文件夹中的文件名,如果存在,则应运行第一个条件,否则,如果不存在,则不应执行任何操作

我尝试过使用else{return false;},else{},但都没有起作用。我也尝试过交换周围的条件,但也不起作用

我不断收到一个错误,说“异常:无法检索下一个对象:迭代器已到达末尾。(第7行,文件“调用”)”,因为一旦从文件中检索到数据,该文件就会被删除

第一个条件工作正常,但如果文件夹中不存在csv文件,则会显示上述消息。我的想法是设置一个每分钟运行一次的触发器来检查文件夹

以下是我到目前为止的情况。任何帮助都将不胜感激

function calls(){

var hotFolder = DriveApp.getFolderById('idHere');
var targetSheet = SpreadsheetApp.openById('idHere').getSheetByName('sheetNameHere');
var callsSheet = SpreadsheetApp.openById('idHere').getSheetByName('sheetNameHere');

var callsCsv = hotFolder.getFilesByName('fileName.csv.Here').next();

    if(callsCsv) {
    
          var csvData = Utilities.parseCsv(callsCsv.getBlob().getDataAsString());
          
          targetSheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
          
          callsCsv.setTrashed(true);
          
          var targetSheetData = targetSheet.getRange(2,1,targetSheet.getLastRow()-1,targetSheet.getLastColumn()).getValues();
          
          var handleTime = targetSheetData.map(function(row){
          
                if([row[9]] != 'ABANDON') {
                
                return [row[6] + row[7] +15];
                
                } else {
                
                return [['']];
                
                } 
                                                         
             });
             
          targetSheet.getRange(2,12,handleTime.length).setValues(handleTime);
         
          var newData = targetSheet.getRange(2,1,targetSheet.getLastRow(),targetSheet.getLastColumn()).getValues();
          
          callsSheet.getRange(callsSheet.getLastRow,1,newData.length,newData[0].length).setValues(newData);
          
          targetSheet.clear();
         
         } else {
                               
      }
}
         
“异常:无法检索下一个对象:迭代器已到达末尾。(第7行,文件“调用”)”
您收到的错误消息是由于无法获取文件或文件夹集合中的下一项,可能是因为从上一次运行中删除了该项

在这种情况下,您可以使用
hasNext()
方法。根据其报告:

hasNext()
>确定调用
next()
是否将返回项目

返回

布尔值-如果
next()
将返回一个项目,则为true;如果不是,则为false

因此,您可以将代码更改为:

var callsCsv = hotFolder.getFilesByName('fileName.csv.Here');
    if (callsCsv.hasNext()) {
        var callsCsvFile = callsCsv.next();
        // your code here - callsCsv becomes callsCsvFile
    }
参考文献
异常:无法检索下一个对象:迭代器已到达末尾。(第7行,文件“调用”)“您收到的错误消息是由于无法获取文件或文件夹集合中的下一项,可能是因为从上一次运行中删除了

在这种情况下,您可以使用
hasNext()
方法。根据其报告:

hasNext()
>确定调用
next()
是否将返回项目

返回

布尔值-如果
next()
将返回一个项目,则为true;如果不是,则为false

因此,您可以将代码更改为:

var callsCsv = hotFolder.getFilesByName('fileName.csv.Here');
    if (callsCsv.hasNext()) {
        var callsCsvFile = callsCsv.next();
        // your code here - callsCsv becomes callsCsvFile
    }
参考文献

大家好,欢迎来到SO。不要把重点放在
else
,试着把重点放在var
callsCsv=hotFolder.getFilesByName('fileName.csv.Here').next()上我相信这会引发边界外调用的异常。在调用迭代器中的“下一个”文件之前,请先检查迭代器是否有“下一个”文件。非常感谢@Daemon Painter&@TheMaster的回复。这完全有道理。具有讽刺意味的是,这实际上是我第一次尝试实现的目标。这是我第一次尝试学习任何编程语言,而且我刚开始学习才一个月。非常感谢您的反馈。再次感谢,工作得很有魅力!大家好,欢迎来到SO。不要把重点放在
else
,试着把重点放在var
callsCsv=hotFolder.getFilesByName('fileName.csv.Here').next()上我相信这会引发边界外调用的异常。在调用迭代器中的“下一个”文件之前,请先检查迭代器是否有“下一个”文件。非常感谢@Daemon Painter&@TheMaster的回复。这完全有道理。具有讽刺意味的是,这实际上是我第一次尝试实现的目标。这是我第一次尝试学习任何编程语言,而且我刚开始学习才一个月。非常感谢您的反馈。再次感谢,工作得很有魅力!谢谢@ale13。我根据您的建议添加了额外的代码行,它整理了我收到的错误消息。谢谢你的努力,我感谢你在这方面的帮助。谢谢@ale13。我根据您的建议添加了额外的代码行,它整理了我收到的错误消息。谢谢你的努力,我感谢你在这方面的帮助。