我一直在用脚本编写算法,以通过API检索来填充来自Google工作表的缺失数据。成功检索包含相关数据的JSON对象后,我尝试调用特定部分,并且当静态完成时,这根本不是问题!但是,当我尝试在循环内调用同一部分时,即使日志很好,它也会吐出一个错误,甚至。这是代码段:
var jsonEmpSuper = JSON.parse(UrlFetchApp.fetch(urlBase.concat(urlEmp).concat(jsonInternalId.id).concat(urlBank), options));
var jsonBusDeducs = JSON.parse(UrlFetchApp.fetch(urlBase.concat(urlDeduc), options));
Logger.log(jsonBusDeducs[1].name); //works!
for (var j = 0;j <= 10; j++) { //"TypeError: Cannot read property "name" from undefined."
Logger.log(j); //works!
Logger.log(jsonBusDeducs[j].name); //works!
Logger.log(sheet.getRange(i,1).getValue()); //works!
if (jsonBusDeducs[j].name == sheet.getRange(i,1).getValue()) {
Logger.log('Yo, ive spotted a match!'); //works, correctly spots matches?!?!?!
sheet.getRange(i,18).setValue(jsonBusDeducs[j].id);
}
指示url和api详细信息的变量是为了保护c所允许的。
答案 0 :(得分:0)
您可能正在循环中访问数组之外的内容。将限制更改为jsonBusDeducs.length
:
for (var j = 0; j < jsonBusDeducs.length; j++)
请记住,您必须使用<
,而不是<=
。数组索引从0
到length-1
。