我有一个包含脚本的电子表格,该脚本可以检查另一个电子表格中的客户名称,并返回关联的客户代码。只要客户名称在它引用的“ CustomerCodes”表中,它就可以很好地工作。如果那里不存在客户名称,我希望将变量值“ customerCode”设置为“找不到匹配项”。现在,它只会引发错误,不会再运行该脚本。这是代码:



var customerName = sheet.getRange('I2').getValue();

  var ccsheet = ss.getSheetByName("CustomerCodes");
  var lastRow = ccsheet.getLastRow();

  Logger.log("lastRow: " + lastRow);

  var lookUp = ccsheet.getRange(2, 1, lastRow, 3).getValues();

  for (nn=0; nn<lookUp.length; ++nn) {
    if (lookUp[nn][0] == customerName) {break}
  }

  //This is where I am having the trouble
  var customerCode = lookUp[nn][1];

  Logger.log("customerCode: " + customerCode);





因此,如果“ for”循环确实找到匹配项,则会将“ customerCode”变量设置为该匹配项。如果找不到匹配项,我希望将“ customerCode”变量设置为“找不到匹配项”,以便用户知道为什么未返回客户代码。变量“ customerCode”的值稍后在函数中返回给用户。

我对错误处理的理解不是很好,因为我对这一切真的很陌生,而且我找不到任何说明得很好的Google Apps脚本文档。非常感谢您的帮助!

最佳答案

对于信息,实际上有很多方法可以得到您想要的结果。一种更简单易读的方法如下:

var customerCode = 'no customer with this ID found in the list';
for (var nn=0; nn<lookUp.length; ++nn) {
    if (lookUp[nn][0] == customerName) {
        customerCode = lookUp[nn][1];
        break;
    }
}


当然返回的结果相同,但是避免使用上面使用的简短形式IF THEN ELSE语句(又名三元运算符)。

10-06 07:33