【问题标题】:Google Apps Script - Google Sheet - Array randomly getting cannot read propertyGoogle Apps Script - Google Sheet - 随机获取的数组无法读取属性
【发布时间】:2019-01-29 22:45:38
【问题描述】:

尝试从从我们的谷歌域中提取的数组中读取属性“deviceId”,deviceId 存在,但脚本随机停止,我得到“TypeError:无法从未定义中读取属性“deviceId”。”这将返回 48 个有效结果,如果我将最大结果设置为较小的数字,它仍然会以相同的错误停止。

这也发生在我尝试读取的所有其他属性上。

function chromebookdetails() {
var domain, chromebooks, page, ss, sheet, pageToken, i
domain = "mydomainnamehere"
chromebooks= new Array()
do{
page = AdminDirectory.Chromeosdevices.list("my_customer",
{domain: domain,
maxResults: 10,
pageToken: pageToken
}) 
for (i in page.chromeosdevices){
chromebooks.push(page.chromeosdevices[i])
}
pageToken = page.nextPageToken
}while(pageToken){
var row = 1
for (var i = 0; i < chromebooks.length; i++) {
var sheetData4 = onSheet.getSheetByName("chromebook") 
sheetData4.getRange(row, 1).setValue(page.chromeosdevices[i].deviceId);
Logger.log(page.chromeosdevices[i].deviceId)
row++
Logger.log(row)
}
}
}

我的名为 chromebook 的电子表格应该填充一列(目前),每一行都有一个单独的 chromebook 设备 ID。 得到的是 48 个结果(如果最大结果设置为 1500)(我总共有 848 个设备)或 8 个结果(如果最大结果设置为 10)

【问题讨论】:

    标签: arrays google-apps-script google-sheets


    【解决方案1】:

    替换:

    sheetData4.getRange(row, 1).setValue(page.chromeosdevices[i].deviceId);
    

    与:

    sheetData4.getRange(row, 1).setValue(chromebooks[i] ? chromebooks[i].deviceId : "");
    

    【讨论】:

    • 不幸的是,它是完全相同的错误,返回 9 行并弹出 TypeError: Cannot read property "deviceId" from undefined., 如果我将 max rows 设置为 100,它会进一步到达第 48 行)但仍然失败,调试时我可以看到第 10 行(或第 49 行)的属性
    • 对于某些项目,您的数据中可能没有 deviceId。您可以为此添加支票。 (见更新的代码)
    • 试过了,它在同一行也失败了(如果最大结果 = 100,它会在第 49 行停止,如果设置为 10 在第 9 行停止)if(chromebooks[i].length == 0){ // array is empty Logger.log('empty'); } else { //array not empty Logger.log('not empty'); sheetData4.getRange(row, 1).setValue(chromebooks[i].deviceId); }
    • 经过一番摸索后,我删除了 Logger 条目 Logger.log(page.chromeosdevices[i].deviceId),这导致所有记录都被拉出,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多