我正在使用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)
}}
答案 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);
}
}