處理指令碼中的錯誤和警告

指令碼傳回錯誤的唯一時候,就是當您新增具有無效值的實體時。 例如,如果您嘗試新增具有無效出價金額的關鍵字實體,建置作業會失敗,並傳回一或多個錯誤。

        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!');
}

您應始終檢閱記錄到變更記錄和文字記錄中的所有郵件。