擷取物件

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):
  • 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,則回應會針對下列各項組合包含一個資料列:

  • campaign
  • segments.ad_network_type
  • segments.date

系統會根據主要資源的每個例項隱含地區隔結果,而非根據所選個別欄位的值。例如:

SELECT campaign.status, metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_14_DAYS

因此每個廣告活動會顯示一列,而非 campaign.status 欄位中每個不同的值顯示一列。