TypeError:无法读取属性";0“;来自未定义的Javascript
我正在尝试运行以下代码,但出现以下错误:TypeError:无法读取属性";0“;来自未定义的Javascript,javascript,multidimensional-array,Javascript,Multidimensional Array,我正在尝试运行以下代码,但出现以下错误: TypeError: Cannot read property "0" from undefined. (line 111) 所讨论的问题是: perCampaignRows.push([STRATEGISTS[i][1], 这是完整的代码 var perCampaignRows = []; for (var i = 0; i < STRATEGISTS.length; i++) { var accountIterator = Mcc
TypeError: Cannot read property "0" from undefined. (line 111)
所讨论的问题是:
perCampaignRows.push([STRATEGISTS[i][1],
这是完整的代码
var perCampaignRows = [];
for (var i = 0; i < STRATEGISTS.length; i++) {
var accountIterator = MccApp.accounts()
.withCondition("ManagerCustomerId = '" + STRATEGISTS[i][0] + "'")
.get();
var mccAccount = AdWordsApp.currentAccount();
while (accountIterator.hasNext()) {
var account = accountIterator.next();
MccApp.select(account);
Logger.log("Checking " + account.getName() + " - CID: " + account.getCustomerId());
var campaignIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
var activeCampaigns = campaignIterator.totalNumEntities();
if (activeCampaigns === 0) {
Logger.log("No Active Campaigns");
perCampaignRows.push([
STRATEGISTS[i][1],
STRATEGISTS[i][2],
account.getCustomerId(),
account.getName(),
activeCampaigns,
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
]);
}
else {
Logger.log(activeCampaigns + " Active Campaigns");
}
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
Logger.log("Campaign: " + campaign.getName());
var mobileBid = checkPlatform(campaign);
var isRotatingEvenly = checkAdRotation(campaign);
var sitelinkData = checkSitelinks (campaign);
var isUsingMobileAds = checkAds(campaign);
var callExtData = checkCallExtensions(campaign);
var isUsingAdSchedule = checkAdSchedules(campaign);
var isSomewhatLimitedByBudget = checkBudgetLimitations(campaign);
if (isUsingAdSchedule && isSomewhatLimitedByBudget) {
var warnAboutBudgetAndSchedule = "TRUE";
}
else {
var warnAboutBudgetAndSchedule = "FALSE";
}
Logger.log(perCampaignRows);
perCampaignRows.push([
STRATEGISTS[i][1],
STRATEGISTS[i][2],
account.getCustomerId(),
account.getName(),
activeCampaigns,
campaign.getName(),
mobileBid,
isRotatingEvenly,
sitelinkData[0],
sitelinkData[1],
sitelinkData[2],
isUsingMobileAds,
callExtData[0],
callExtData[1],
warnAboutBudgetAndSchedule
]);
}
}
}
有什么想法吗
编辑
根据要求,我补充说:
Logger.log(STRATEGISTS.length);
Logger.log(STRATEGISTS);
第一个记录了51,第二个记录了预期的变量
谢谢,多亏了Guffa,我意识到即使我把push语句分成了不同的行,它也被视为一行。我原以为问题出在我的.push实现上,但实际上问题出在一个被推送的变量上 结果我错过了一次返程
var callExtData = checkCallExtensions(campaign);
因此callExtData为空,因此未定义
谢谢 如果你得到了这个错误,为了好玩,可以做一个
控制台.log(战略家)
,因为引擎告诉你这个对象不存在。它被从上下文中删除了。。。很可能是在使用后声明的,也可能是在另一个作用域中声明的。完整代码段:您有一条多行语句,因此在语句的第一行会收到错误消息。可能未定义的候选项是sitelinkData
和callExtData
,因为您使用索引0访问它们。请尝试将callExtData[0]
和sitelinkData[0]
替换为类似null
的内容,以识别罪犯。或者,尝试在语句之前将callExtData[0]
和sitelinkData[0]
分配给一个新变量,并使用该变量缩小有关错误行号的可疑代码。
var callExtData = checkCallExtensions(campaign);