疑難排解

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

影片:觀看 2019 年講習課程的錯誤處理研討會

錯誤可能是環境設定錯誤、軟體錯誤或是使用者的輸入內容無效所造成。無論來源為何,您都必須解決問題並修正程式碼或新增邏輯來處理使用者錯誤。本指南將說明一些最佳做法,協助您排解 Google Ads API 的錯誤。

確保連線能力

  1. 請確定您可以存取 Google Ads API 並採用正確的設定。如果您的回應傳回任何 HTTP 錯誤,請務必謹慎處理這些錯誤,並確實觸及要透過程式碼使用的服務。

  2. 您的憑證會嵌入在要求中,以便服務驗證您的身分。熟悉 Google Ads API 要求和回應的結構,特別是當您想要在不使用用戶端程式庫的情況下處理呼叫時。每個用戶端程式庫都會隨附有關如何在憑證中納入憑證的特定操作說明 (請參閱用戶端程式庫的 README)。

  3. 確認您使用的是正確的憑證。我們的快速入門導覽課程將引導您取得所需的正確組合。例如,下列回應失敗顯示使用者傳送無效的驗證憑證:

    {
      "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" }
    }
  ]
}

我們所有的用戶端程式庫都會擲回封裝回應中的例外狀況。如要擷取這些例外狀況並列印訊息,不妨在記錄或疑難排解畫面中列印,這是不錯的開始方式。將這些資訊與應用程式中的其他記錄事件整合,有助於大致瞭解可能引發問題的原因。找出記錄中的錯誤後,您便需要釐清其含意。

調查錯誤

  1. 請參閱常見錯誤說明文件,其中涵蓋最常見的錯誤。並說明錯誤訊息、相關的 API 參考資料,以及如何避免或處理錯誤。

  2. 如果我們的常見錯誤說明文件並未特別提及錯誤,請參閱參考說明文件並尋找錯誤字串。

  3. 搜尋支援管道,以便存取其他透過 API 分享經驗的開發人員。其他人可能已遇到並解決你的問題。

  4. 如果您遇到任何未記錄的錯誤,請將該項建議放到論壇上。

  5. 如需驗證驗證或帳戶限制問題的相關協助,請前往 Google Ads 說明中心;Google Ads API 會沿用 Google Ads 核心產品的規則和限制。

  6. 進行疑難排解時,網誌文章有時就是很好的參考。

調查完錯誤後,您就可以判斷問題的根本原因。

找出原因

請查看例外狀況訊息,判斷造成錯誤的原因。檢查回應後,請檢查要求是否有可能的原因。部分 Google Ads API 錯誤訊息會在 GoogleAdsErrorlocation 欄位中填入 fieldPathElements,代表在要求中的錯誤發生位置。例如:

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

排解問題時,您的應用程式可能為 API 提供錯誤資訊。強烈建議您使用互動式開發環境 (IDE),例如 Eclipse (一種免費的開放原始碼 IDE,主要用於開發 Java,但擁有適用於其他語言的外掛程式),可協助您進行偵錯。可讓您設定中斷點並逐步逐行瀏覽程式碼。

請仔細檢查,確認要求與您的應用程式輸入內容相符 (例如,Campaign Manager 的名稱可能不適用於要求)。請確定您傳送的欄位遮罩與您要進行的更新相符,因為 Google Ads API 支援稀疏更新。如果在 BidRequest 要求中省略欄位遮罩,API 應予以保留。如果您的應用程式擷取物件、做出變更並傳送回去,您可能會寫入寫入不支援更新的欄位。請查看參考說明文件中的欄位說明,瞭解更新欄位的時間和時間是否受到任何限制。

如何取得協助

我們有時可能無法自行找出並解決問題。 在論壇上提問,就能向數千位需要處理相同問題的開發人員提出您的問題。

嘗試在查詢中盡量提供詳細資訊。 建議提供的資訊包括:

  • 經過消化的 JSON 要求和回應。請務必移除機密資訊,例如您的開發人員權杖或 AuthToken。
  • 程式碼片段。如果您遇到語言專屬問題或要求使用 API 時需要協助,請加入一段程式碼來說明您所進行的操作。
  • 要求 ID。這樣可讓 Google 開發人員關係團隊成員在對實際工作環境中提出要求時,能夠提出要求。我們建議您將記錄中的 requestId 註冊為屬性 (在封裝回應錯誤時除外),並且單獨提供與使用 idId 相關的背景資訊。
  • 其他資訊 (如執行階段/解譯器版本和平台) 也在疑難排解時相當實用。

修正相關問題

找出問題並想出解決方案後,就可以著手修正變更,並對測試帳戶 (偏好) 或實際工作環境 (如果錯誤僅適用於特定正式版帳戶的資料) 進行測試。

建議分享

如果您已在論壇中張貼一個問題,但由於系統之前並未處理過這項錯誤,而且您已找到該解決方案,建議您將它加到會話串中。開發人員下次遇到相同問題時,就能立即解決問題。

後續步驟

現在您已經解決了這個問題,你是否注意到有改善程式碼的方法,

建立一組良好的單元測試有助於大幅改善程式碼的品質和穩定性。也能加快測試變更的速度,確保變更不會中斷舊功能。要找出疑難排解所需的一切資料,也是良好的錯誤處理策略。