指令碼傳回錯誤的唯一時候,就是當您新增具有無效值的實體時。 例如,如果您嘗試新增具有無效出價金額的關鍵字實體,建置作業會失敗,並傳回一或多個錯誤。
var operation = adGroup.newKeywordBuilder()
.withText(keywordText)
.withCpc(-5)
.build();
if (operation.isSuccessful()) {
var keyword = operation.getResult();
Logger.log(`Added keyword, ${keyword.getText()}.`);
}
else {
// The bid amount is not valid, so this path executes
for (var error of operation.getErrors()) {
Logger.log(error);
}
}
不過,如果您嘗試使用無效值來更新實體的屬性,指令碼不會傳回錯誤。 相反地,指令碼會將錯誤訊息寫入 變更記錄 檔,而您的程式碼會繼續執行。 例如,下列程式碼會嘗試設定廣告群組的 CPC 出價。 因為金額無效,所以呼叫會無訊息失敗,指令碼會繼續執行,錯誤訊息會寫入變更記錄檔。
function main() {
var adGroup = AdsApp.adGroups().get().next();
adGroup.bidding().setCpc(-5);
}
注意事項
雖然您可能會想在設定 method 的值後呼叫 getCpc method 來確認更新成功,但不要這樣做。 在呼叫 set 方法之後呼叫 get 方法會消除批次更新功能,從而降低效能。 如需詳細資訊,請參閱最佳實務中的批次更新。
其他錯誤,例如執行階段錯誤或實體擷取失敗,會導致指令碼執行停止。 發生這種情況時,錯誤訊息會寫入 文字記錄檔。 下列程式碼會嘗試呼叫函式, foo() 但因為函式尚未定義,指令碼會終止執行。
function main() {
foo(); // The script stops because foo() is undefined and generates a reference error
Logger.log('This line is never logged!');
}
您應始終檢閱記錄到變更記錄和文字記錄中的所有郵件。