我正在将一些JSON数据从API来源提取到Google表格中,并准备将其推送到数组中。我使用JSON.parse
将数据放入以下格式:
[{EmployeeRef={name=value, value=value}, NameOf=value, Hours=value, TxnDate=value, HourlyRate=value, Minutes=value, PayrollItemRef=value, SyncToken=value, BillableStatus=value, sparse=value, MetaData={CreateTime=value, LastUpdatedTime=value}, domain=value, ItemRef={name=value, value=value}, ID=value, CustomerRef={name=value, value=value}, Taxable=value}, etc.]
但是,当我尝试将其推入空数组时,出现错误。这是我用来将其推入数组的方法:
results.forEach(function(elem,z) {
output.push([elem["TxnDate"],elem["EmployeeRef"]['name'],elem["CustomerRef"]['name'],elem["ItemRef"]['name'],elem["BillableStatus"],elem["HourlyRate"],elem["Hours"],elem["Minutes"],elem["Description"]]);
});
我得到的错误是
“ TypeError:无法从未定义中读取属性“名称”。(第62行,文件 “代码”)”。
所以我想我只需要检查一下数组中的一组值即可。但是,当我运行以下代码时:
Logger.log(results[0]['EmployeeRef']['name']);
我得到:
[18-12-06 13:27:41:465 EST]值
[18-12-06 13:27:41:878 EST]值
为什么我从中得到两个值?我以为可以说result [0]只会使我成为阵列的“一排”。在我看来,好像是results [0] 和 results [1]中的'EmployeeRef'和'name'值。
这就是为什么我收到TypeError消息的原因吗?我在做什么错了?
答案 0 :(得分:0)
您在对象数组中缺少CustomerRef
对象,这就是为什么在尝试添加到数组elem["CustomerRef"]['name']
时会遇到该错误的原因。
(与那里的EmployeeRef
无关)
在访问数组内部对象的null
参数之前,您可能应该只添加某种name
检查。
与此类似:
results.forEach(function(elem, z) {
output.push(
[elem["TxnDate"],
elem["EmployeeRef"] ? elem["EmployeeRef"]["name"] : null,
elem["CustomerRef"] ? elem["CustomerRef"]["name"] : null,
elem["ItemRef"] ? elem["ItemRef"]["name"] : null,
elem["BillableStatus"],
elem["HourlyRate"],
elem["Hours"],
elem["Minutes"],
elem["Description"]
]);
});
注意:如果null
对象或EmployeeRef
对象不存在,则会向数组中添加CustomerRef
个值,但抛出错误的可能性较小。