錯誤的原因可能是環境設定不正確、軟體錯誤,或使用者的輸入內容無效。無論來源為何,您都需要排解問題,並修正程式碼或新增邏輯來處理使用者錯誤。本指南將說明排解 Google Ads API 錯誤時的一些最佳做法。
確保連線安全
確定您可以存取 Google Ads API 並設定正確的設定。如果回應傳回任何 HTTP 錯誤,請務必確實解決這些錯誤,並確認您是否可透過程式碼存取預定使用的服務。
您的憑證會嵌入要求中,以便服務驗證您的身分。熟悉 Google Ads API 要求和回應的結構,尤其是您打算在不使用用戶端程式庫的情況下處理呼叫時。每個用戶端程式庫都會隨附具體操作說明,說明如何在設定檔中加入憑證 (請參閱用戶端程式庫的 README)。
請確認您使用正確的憑證。我們的快速入門導覽課程會逐步引導您取得所需的正確組合。舉例來說,以下回應失敗顯示使用者傳送了無效的驗證憑證:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
如果您按照這些步驟操作後仍未解決,請務必找出 Google Ads API 錯誤的疑難排解方法。
確定問題
Google Ads API 通常會將錯誤回報為 JSON 錯誤物件,內含回應中的錯誤清單。這些物件會提供錯誤代碼和訊息,說明發生原因。他們是判斷問題的主要信號
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword/matchtype'.",
"location": { "operationIndex": "1" }
}
]
}
所有用戶端程式庫都會擲回在回應中封裝錯誤的例外狀況。請擷取這些例外狀況,並在記錄或疑難排解畫面中輸出訊息,這是很好的起點。將這些資訊與應用程式中的其他已記錄事件整合,可讓您清楚總覽可能引發問題的原因。在記錄中找出錯誤後,您需要釐清該錯誤代表的意義。
研究錯誤
請參閱「常見錯誤」說明文件,其中涵蓋最常見的錯誤。它會說明錯誤訊息、相關 API 參考資料,以及如何避免或處理錯誤。
如果常見錯誤說明文件並未特別提及錯誤,請參閱參考說明文件並尋找錯誤字串。
搜尋我們的支援管道,存取其他分享使用 API 的開發人員經驗。可能有人冒用您的身分,並解決了相同問題。
如果遇到未記錄的錯誤,請在論壇中留意。
請前往 Google Ads 說明中心,瞭解如何解決驗證或帳戶限制問題;Google Ads API 會沿用 Google Ads 核心產品的規則和限制。
排解應用程式問題時,網誌文章有時也會是很好的參考資源。
調查錯誤後,您就可以找出根本原因了。
找出原因
請查看例外狀況訊息,找出錯誤原因。查看回應後,請檢查要求可能原因。部分 Google Ads API 錯誤訊息會在 GoogleAdsError
的 location
欄位中包含 fieldPathElements
,指出要求中發生錯誤的位置。例如:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"operationIndex": "0",
"fieldPathElements": [ { "fieldName": "keyword" } ]
}
}
]
}
排解問題時,可能是應用程式向 API 提供了錯誤資訊。我們強烈建議使用 Eclipse 等互動式開發環境 (IDE),主要用於開發 Java,但具備其他語言的外掛程式,以協助您偵錯。能讓您設定中斷點,並逐行執行程式碼。
請再次檢查要求,確認要求與應用程式的輸入內容相符 (例如廣告活動名稱可能沒有傳送至要求)。請務必傳送與要進行的更新相符的欄位遮罩,Google Ads API 支援稀疏更新功能。如果您在變更請求中省略欄位遮罩中的欄位,API 應單獨保留該欄位。如果您的應用程式擷取、進行變更後傳回物件,您可能寫入不支援更新的欄位。請查看參考說明文件中的欄位說明,瞭解該欄位在何時或是否可以更新時是否有任何限制。
如何取得協助
您未必能夠自行找出並解決問題。 如果您在論壇上提問,就會有數千名必須處理相同問題的開發人員看到您的問題。
請在查詢中盡可能加入所有相關資訊。 建議提供的資訊包括:
- 清理的 JSON 要求和回應。請務必移除機密資訊,例如您的開發人員權杖或 AuthToken。
- 程式碼片段。如果您遇到特定語言的問題,或想取得使用 API 的相關協助,請附上一段能說明您用途的程式碼片段。
- RequestId。如此一來,如果是針對實際工作環境發出的要求,Google 開發人員關係團隊成員就能找到您的要求。建議您在記錄中註冊 requestId 做為屬性,在封裝回應錯誤及比 requestId 本身更多的例外狀況中。
- 執行階段/解譯器版本和平台等其他資訊,在疑難排解時也能派上用場。
修正相關問題
現在您已找出問題所在並想出解決方案,現在可以進行變更,然後針對測試帳戶 (建議做法) 或正式環境 (如果錯誤僅適用特定正式版帳戶中的資料) 測試修正結果。
考慮分享
如果您曾在論壇中張貼問題,與先前未曾發現的錯誤有關,但您已找到解決方案,請考慮將其新增至討論串。下次遇到相同問題時,開發人員可以立即解決問題。
後續步驟
現在您已經解決了這個問題,請問有沒有發現任何可以改善程式碼的方法,以免發生此問題?
建立一組良好的單元測試,可大幅提升程式碼的品質和可靠性。它還能加快測試新變更的流程,以確保先前的功能不會中斷。理想的錯誤處理策略,也是找出疑難排解所需的所有必要資料的關鍵。