API 結構

影片:觀看 2019 年研討會的「服務與資源」講座

本指南將介紹 Google Ads API 的主要元件。Google Ads API 包含資源服務。資源代表 Google Ads 實體,而服務則會擷取及操控 Google Ads 實體。

物件階層

Google Ads 帳戶可視為物件的階層。

廣告活動模型

  • 帳戶的頂層資源是客戶

  • 每個客戶都包含一或多個有效的廣告活動

  • 每個廣告活動都包含一或多個廣告群組,可將廣告歸入邏輯集合。

  • 廣告群組廣告代表您放送的廣告。除了每個廣告群組只能有一個廣告群組廣告的應用程式廣告活動外,每個廣告群組都包含一或多個廣告群組廣告。

您可以將一或多個 AdGroupCriterionCampaignCriterion 附加至廣告群組或廣告活動。這些條件會定義廣告的觸發方式。

條件類型有很多種,例如關鍵字、年齡範圍和地點。在廣告活動層級定義的條件會影響廣告活動中的所有其他資源。您也可以指定廣告活動整體的預算和日期。

最後,您可以在帳戶、廣告活動或廣告群組層級加入額外資訊。您可以在廣告中加入額外資訊,例如電話號碼、街道地址或促銷活動。

資源

資源代表 Google Ads 帳戶中的實體。CampaignAdGroup 是資源的兩個例子。

物件 ID

Google Ads 中的每個物件都有專屬 ID。其中有些 ID 在所有 Google Ads 帳戶中都是專屬的,有些則只在特定範圍內專屬。

物件 ID 唯一性範圍 是否為全域專屬?
預算 ID 全域
廣告活動編號 全域
AdGroup 編號 全域
廣告編號 廣告群組 否,但 (AdGroupIdAdId) 配對是全域不重複
AdGroupCriterion 編號 廣告群組 否,但 (AdGroupIdCriterionId) 配對是全域不重複
CampaignCriterion 編號 廣告活動 否,但 (CampaignIdCriterionId) 配對是全域不重複
廣告額外資訊 廣告活動 否,但 (CampaignIdAdExtensionId) 配對是全域不重複
標籤 ID 全域
使用者名單 ID 全球
資產 ID 全球

設計 Google Ads 物件的本機儲存空間時,這些 ID 規則會很有用。

部分物件可供多種實體類型使用。在這種情況下,物件會包含 type 欄位,用於說明內容。舉例來說,AdGroupAd 可以指文字廣告、飯店廣告或區域廣告等物件。這個值可透過 AdGroupAd.ad.type 欄位存取,並以 AdType 列舉形式傳回值。

資源名稱

每項資源都由 resource_name 字串唯一識別,該字串會將資源及其父項串連成路徑。舉例來說,廣告活動 資源名稱的格式如下:

customers/customer_id/campaigns/campaign_id

因此,如果 Google Ads 帳戶的客戶 ID 為 1234567,且廣告活動的 ID 為 987654,則 resource_name 會是:

customers/1234567/campaigns/987654

服務

您可以使用服務擷取及修改 Google Ads 實體。服務分為三種:修改、物件和狀態擷取,以及中繼資料擷取服務。

修改 (變動) 物件

這些服務會使用 mutate 要求修改相關聯資源類型的執行個體。他們也會提供 get 要求,用於擷取單一資源執行個體,這有助於檢查資源結構。

服務範例:

每個 mutate 要求都必須包含對應的 operation 物件。舉例來說,CampaignService.MutateCampaigns 方法需要一或多個 CampaignOperation 例項。如需作業的詳細討論,請參閱「變更及檢查物件」。

同時變更

Google Ads 物件無法同時由多個來源修改,如果有多位使用者透過應用程式更新相同物件,或是您使用多個執行緒平行變更 Google Ads 物件,就可能發生錯誤。包括從同一應用程式中的多個執行緒更新物件,或從不同應用程式更新物件 (例如您的應用程式和同步進行的 Google Ads 使用者介面工作階段)。

API 不提供在更新前鎖定物件的方法;如果兩個來源嘗試同時變動物件,API 會引發 DatabaseError.CONCURRENT_MODIFICATION_ERROR

非同步與同步變動

Google Ads API 的變動方法是同步的。API 呼叫只會在物件變動後傳回回應,因此您必須等待每個要求的回應。雖然這種方法編碼相對簡單,但如果程序被迫等待呼叫完成,可能會對負載平衡造成負面影響,並浪費資源。

另一種做法是使用 BatchJobService 非同步變動物件,這項作業會對多項服務執行批次作業,而不必等待作業完成。提交批次作業後,Google Ads API 伺服器會非同步執行作業,讓程序可執行其他作業。您可以定期檢查工作狀態,確認工作是否完成。

如要進一步瞭解非同步處理,請參閱批次處理指南

變更驗證

大多數的變動要求都可驗證,而不需對實際資料執行呼叫。您可以在不實際執行作業的情況下,測試要求是否有遺漏的參數和不正確的欄位值。

如要使用這項功能,請將要求的選用 validate_only 布林值欄位設為 true。接著,系統會像要執行要求一樣,對要求進行完整驗證,但會略過最終執行程序。如果沒有發現錯誤,系統會傳回空白的回應。如果驗證失敗,回應中的錯誤訊息會指出失敗原因。

validate_only 特別適合用於測試廣告,找出常見的政策違規事項。如果廣告違反政策 (例如含有特定字詞、標點符號、大寫或長度),系統就會自動拒登。如果有一則廣告不符規定,整批廣告都會遭到拒登。在validate_only 要求中測試新廣告,即可找出這類違規事項。請參閱處理政策違規錯誤的程式碼範例,瞭解實際運作情形。

取得物件和成效統計資料

GoogleAdsService 是單一整合式服務,可擷取物件和成效統計資料。

所有 SearchSearchStreamGoogleAdsService 要求都必須包含查詢,指定要查詢的資源、要擷取的資源屬性和成效指標、用於篩選要求的述詞,以及用於進一步細分成效統計資料的區隔。如要進一步瞭解查詢格式,請參閱 Google Ads 查詢語言指南

擷取中繼資料

GoogleAdsFieldService 會擷取 Google Ads API 中資源的中繼資料,例如資源的可用屬性和資料類型。

這項服務會提供建構查詢所需的資訊,以便GoogleAdsService。為方便起見,GoogleAdsFieldService 傳回的資訊也提供於欄位參考說明文件