GoogleAdsService 是 Google Ads API 的統一物件擷取和報表服務。這項服務提供下列方法:
- 擷取物件的特定屬性。
- 根據日期範圍擷取物件的成效指標。
- 根據物件的屬性排序。
- 使用條件來指出您希望在回應中傳回哪些物件。
- 限制傳回的物件數量。
GoogleAdsService 可以透過兩種方式傳回結果:
GoogleAdsService.SearchStream會以單一串流回應傳回所有資料列,因此對於大型 (超過 10,000 列) 結果集來說,效率更高。如果應用程式會下載完整結果集,或以串流形式處理資料列,建議使用這項功能。GoogleAdsService.Search會將大型回覆分成多個頁面,方便您管理。如果互動式應用程式一次顯示一頁結果,這項功能就非常實用。
進一步瞭解分頁與串流。
提出要求
GoogleAdsService.SearchStream
需要
SearchGoogleAdsStreamRequest,
而 GoogleAdsService.Search 需要
SearchGoogleAdsRequest。這兩種要求類型都包含:
- A
customer_id - Google Ads 查詢語言
query,指出要查詢的資源、要擷取的屬性、區隔和指標,以及用於限制傳回哪些物件的條件
視方法而定,要求也支援方法專屬欄位:
SearchGoogleAdsStreamRequest(僅限SearchStream):- 選用的
summary_row_setting,可要求提供包含匯總指標的摘要列
- 選用的
SearchGoogleAdsRequest(僅限Search):- 選用
page_token,可在使用分頁時擷取下一批結果 (page_size固定為 10,000 列;在要求中設定page_size會擲回RequestError.PAGE_SIZE_NOT_SUPPORTED錯誤) - 選用的
search_settings訊息,用於設定return_summary_row、return_total_results_count和omit_results - 選用的
validate_only布林值,用於驗證查詢,但不執行查詢
- 選用
如要進一步瞭解 Google Ads 查詢語言,請參閱 Google Ads 查詢語言指南。
處理回覆
GoogleAdsService 會傳回 GoogleAdsRow 物件清單 (在串流 SearchGoogleAdsStreamResponse 批次或分頁 SearchGoogleAdsResponse 中)。
每個 GoogleAdsRow 都代表查詢傳回的物件,並包含一組屬性,這些屬性會根據 SELECT 子句中要求的欄位填入。如果屬性未包含在 SELECT 子句中,就不會填入回應中的 GoogleAdsRow 物件。
舉例來說,雖然 ad_group_criterion 具有 status 屬性,但如果查詢的 SELECT 子句不包含 ad_group_criterion.status,則系統不會在查詢的回應中填入資料列 ad_group_criterion 屬性的 status 欄位。同樣地,如果 SELECT 子句未包含 campaign 資源的任何欄位,系統就不會填入資料列的 campaign 屬性。
每個 GoogleAdsRow 的屬性和指標可能與同一結果集中的其他資料列不同,因此資料列應視為物件,而非表格中的固定資料列。
UNKNOWN 和 UNSPECIFIED 列舉類型
如果資源傳回的列舉值為 UNKNOWN,表示該 API 版本不完全支援該資源;如果為 UNSPECIFIED,則表示列舉欄位尚未設定,或未在 SELECT 子句中要求。具有 UNKNOWN 列舉值的資源可能是透過其他介面 (例如 Google Ads 使用者介面) 建立。當資源類型為 UNKNOWN 時,您可以選取指標,但無法透過 API 變更資源。舉例來說,您查詢的 API 版本可能不支援 UI 中的廣告活動或廣告類型。
請注意以下事項:
UNKNOWN類型的資源可能會在後續 API 版本中獲得支援,或無限期維持UNKNOWN狀態。- 類型為
UNKNOWN的新物件隨時可能出現。這些物件可向後相容,因為 API 中的每個列舉都有UNKNOWN列舉值。系統會傳回資源和UNKNOWN,方便您準確掌握帳戶的整體成效指標。 UNKNOWN資源可附加詳細指標,且可供查詢。UNKNOWN資源通常會完整顯示在 Google Ads 使用者介面中。- 一般來說,
UNKNOWN資源無法透過 API 變動。
區隔
回應會針對下列各項組合,分別包含一個 GoogleAdsRow:
FROM子句中指定的主要資源例項- 每個所選
segments欄位的值
舉例來說,如果查詢選取 FROM campaign,且 SELECT 子句中包含 segments.ad_network_type 和 segments.date,則回應會針對下列各項組合包含一個資料列:
campaignsegments.ad_network_typesegments.date
系統會根據主要資源的每個例項隱含地區隔結果,而非根據所選個別欄位的值。例如:
SELECT campaign.status, metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_14_DAYS
因此每個廣告活動會顯示一列,而非 campaign.status 欄位中每個不同的值顯示一列。