![](/img/trans.png)
[英]Don't understand why this NameError: name 'null' is not defined exception occurs
[英]Google script null object - don't understand why
我開始編寫谷歌腳本來自動化某些任務,在這里我遇到了一個我自己無法解決的問題。 我必須說我既不是應用程序腳本方面的專家(還),也不是 javascript 方面的專家。
這是我的問題。 我調用(私有)REST API 來檢索一些數據。 我得到結果,解析它以獲得一個 Json 對象。 然后我想在電子表格中寫一些屬性。 出於某種原因,我無法操作嵌套對象。
假設我有這個 json 有效負載的列表:
{
id: 2146904633,
status: "in_progress",
success_probability: 99,
amount: "0.0",
decision_maker: "Bob Mauranne",
business_contact: {
id: 2142664162,
nickname: "NIL",
}
}
編輯:我粘貼的代碼有誤(沒有聲明 businessContact,而是聲明了一個變量 bc)。感謝您的評論:) 下面的代碼現在是正確的,但仍然不起作用。
我喜歡這個(過於簡化)的代碼:
var response = UrlFetchApp.fetch(url);
var dataAll = JSON.parse(response.getContentText());
var data, businessContact;
for (i = 0; i < dataAll.length; i++) {
data = dataAll[i];
businessContact = data.business_contact;
Logger.log(data.status);
Logger.log(businessContact);
Logger.log(businessContact.id);
}
我的問題是,當我調用 businessContact.id 時,我收到錯誤“TypeError:無法從空對象讀取屬性 ID”。 我不明白,因為我可以看到 businessContact 的內容:無論是從日志調用還是從調試器,它肯定不是空的。
它似乎只發生在嵌套對象上,因為在簡單的屬性上,我沒有任何錯誤。 而且我在所有嵌套對象上都有同樣的問題,無論我到目前為止嘗試過什么 json 有效負載......
我在互聯網上搜索了解決方案,但沒有找到。 它可能是非常基本的,但我無法讓它工作。
任何的想法 ?
您永遠不會定義您在記錄器中使用的“businessContact”。 您定義了“bc”而不是“businessContact”。 如果您將其更改為 Logger.log(bc.id) 它應該可以工作。
這是您嘗試做的事情的精簡版。
function getJSON() {
var url = "your url";
var response = UrlFetchApp.fetch(url).getContentText();
var data = JSON.parse(response)
data.forEach(function(item) {
Logger.log(item.business_contact.id)
})
}
這是一個拉天氣數據的例子。
function myFunction() {
var url = "https://www.aviationweather.gov/gis/scripts/TafJSON.php";
var response = UrlFetchApp.fetch(url).getContentText();
var data = JSON.parse(response)
data.features.forEach(function(feature) {
Logger.log(feature.properties.id)
})
}
我終於找到了解決方案。 此代碼處於循環中,有時對象 business_contact 為空而我沒有看到它:|
顯然,當我學習一項新技術時,我應該停止工作到深夜......
我的不好,對噪音感到抱歉,並感謝您的回答和評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.