疑難排解

影片:觀看 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 錯誤 訊息包含 fieldPathElementslocation 欄位中 GoogleAdsError,用於表示位置 錯誤發生。例如:

{
  "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,但也有外掛程式 以協助偵錯。可讓你設定中斷點 逐行執行程式碼

仔細檢查要求,確認要求與應用程式的輸入內容相符 (適用於 例如廣告活動名稱可能未傳送至請求)。請確認 你傳送 欄位遮罩 ,Google Ads API 支援 sparse 更新。 如果在 change 請求中省略欄位遮罩中的欄位,即表示 API 就不應該予以保留如果您的應用程式擷取物件,則進行變更 然後將該值傳回,您可能輸入的欄位不會 支援更新。檢查 參考資料中欄位的說明 說明文件,確認在 可以更新欄位

如何取得協助

您可能無法每次都自行找出並解決問題。 在論壇上提問, 許多開發人員可能必須處理 問題。

查詢時,請盡可能加入詳細資訊。 建議提供的資訊包括:

  • 清理的 JSON 要求和回應。務必移除敏感內容 例如您的開發人員權杖或 AuthToken
  • 程式碼片段。如果你遇到的是特定語言的問題,或 要求 API 使用協助,請附上程式碼片段 說明自己做了什麼
  • RequestId。如此一來,Google 開發人員關係團隊成員就能找出 針對實際工作環境發出的要求。三 建議您在記錄中將 requestId 註冊為 封裝回應錯誤及更多相關背景資訊的例外狀況 比單獨的 requestId 還要多
  • 包括執行階段/解譯器版本和 也有助於解決問題

修正相關問題

現在您已經找出問題並想出解決方案,現在正是時候 進行變更,然後透過測試帳戶測試修正結果 (建議做法)。 (如果錯誤僅適用特定正式版帳戶中的資料)。

考慮分享

如果您已在論壇中張貼問題,但解決 但您已找到解決方案,可以考慮將其新增至 。下次遇到相同問題時,開發人員即可解決問題 就能立即上手

後續步驟

現在您已經解決這個問題, 事先避免編寫程式碼?

建立一組良好的單元測試,有助於提升程式碼品質和可靠性 相當可觀還能加快新變更的測試程序,確保 也不會破壞先前的功能理想的錯誤處理策略 以便顯示所有必要的疑難排解資料。