在Google Apps脚本中循环,处理错误,致命错误,停止脚本,循环停止

时间:2017-03-22 21:40:49

标签: javascript loops for-loop google-apps-script

我正在使用Google Apps脚本

我有一张Google表格,其中第1列有120个域名(120行),我需要将这些域名的状态写为" Domain Verified" /"域未经验证"在第7栏

我编写了一个脚本,该脚本使用Admin Directory API服务并使用AdminDirectory.get.domains.verified,这导致布尔值(True =域验证,False =域未验证)检查域的状态以查看它们是否是已验证的Google域名。

我的下面的脚本工作得非常好,它检查每个域名行并将状态置于第7列,但问题是我的循环一旦到达任何尚未在Google注册的域,就会停止,在日志中它说"执行失败:找不到域。 (第36行,文件"代码")[1.412秒总运行时间]"

我希望它一直运行到最后一行(第120行),无论结果如何。

我真正想要的是,无论结果如何,我的循环应覆盖所有120行,你能帮忙吗?

这是我的剧本 - :

function domainList() {

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getActiveSheet()
  var data = sheet.getRange("B2:B").getValues()
  var customer = "my_customer"

  for(i=0; i<data.length; i++){
    var dcheck = AdminDirectory.Domains.get(customer, data[i]);

    var status = dcheck.verified
    if(status === true){
      status = "Domain Verified"}
    else if(status === false){
    status = "Domain Not Verified"}
    else if(status === ({})){
      continue;
    }

    Logger.log(status)

    var range = ss.getSheets()[0].getRange(2+i, 7).clear()

 var range = ss.getSheets()[0].getRange(2+i, 7)
    range.setValue(status)
  }}

2 个答案:

答案 0 :(得分:1)

您可以尝试将部分代码放入try/catch,如果出现错误,只需继续循环:

try {
  var dcheck = AdminDirectory.Domains.get(customer, data[i]);

  if (dcheck) {//Check for truthy value
    var status = dcheck.verified;
  } else {
    continue;//If "get" returned a falsy value then continue
  }
} catch(e) {
  continue;//If error continue looping
}

答案 1 :(得分:0)

这是另一种做同样事情的方式。我不清楚这if(status === ({}))是什么,所以我认为让第三种选择稍微缩小可能会很有趣,因为如果它预期是布尔值而且它既不是真实也不虚假,我不清楚还剩下什么。可能需要一段时间,但我尝试使用调试器来完成此操作。但是我对AdminDirectory并不熟悉,所以我有点猜测。

function domainList() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getRange("B2:B").getValues();
  var customer = "my_customer";
  var value = '';
  for(i=0; i<data.length; i++)
  {
    value = '';
    var dcheck = AdminDirectory.Domains.get(customer, data[i]);
    var status = dcheck.verified;
    switch(status)
    {
      case true:
        value = 'Domain Verified';
        break;
      case false:
        value = 'Domain Not Verified';
        break;
      default:
        value = 'unknown';    
    }
    Logger.log(status);
    var range = ss.getSheets()[0].getRange(2+i, 7)
    range.clear();
    range.setValue(value);
  }
}
相关问题