如要瞭解如何在搜尋廣告中建立搜尋報表,請參閱以下各節 360 Reporting API。
Google 搜尋服務
Search Ads 360 Reporting API 提供特殊服務,可供搜尋 報表。
SearchAds360Service
是一項整合式物件擷取與報表服務
並提供兩種搜尋方法:SearchStream
和 Search
。搜尋次數
透過 Search Ads 360 查詢語言寫入的查詢字串傳送。查詢可定義如下:
- 擷取物件的特定屬性。
- 依據日期範圍擷取物件的成效指標。
- 按照物件屬性排序物件。
- 使用條件篩選結果,指定要傳回哪些物件
- 限制傳回的物件數量。
這兩種搜尋方法都會傳回符合查詢的所有資料列。舉例來說
擷取 campaign.id
、campaign.name
和 metrics.clicks
,API 會傳回
SearchAds360Row
包含廣告活動物件 (含有 id
和 name
欄位)
,以及已設定 clicks
欄位的 metrics
物件。
搜尋方法
SearchStream
傳送單一要求及啟動永久連線 使用 Search Ads 360 Reporting API,無論報表大小為何。
- 資料封包會以完整的結果立即開始下載 會在資料緩衝區中快取版本
- 您的程式碼可以直接讀取緩衝處理的資料,不必等待 完整播放。
Search
傳送多個分頁請求,以下載整份報表。
SearchStream
通常不會帶來效益,因為這可避免
要求個別網頁所需的往返網路時間。為求明確,建議採用
超過 10,000 列的所有報表:SearchStream
。沒有顯著差異
以較小報表 (少於 10,000 列) 採用不同方法的成效差異。
使用的方法不會影響 API 配額與限制,單一查詢或報表就是 只會計為一次作業,無論結果是經過分頁還是串流處理都一樣。
搜尋查詢範例
這個查詢範例會傳回帳戶最近 30 天的成效資料 按廣告活動區隔,按裝置劃分:
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.average_cpc,
metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
提出要求
如要發出要求,您必須傳遞 customer_id
和 query
字串
至SearchAds360Service.SearchStream
或SearchAds360Service.Search
存取 API
這項要求是由 HTTP POST
傳送至 Search Ads 360 Reporting API
位於以下任一網址:
https://searchads360.googleapis.com/VERSION_NUMBER/customers/CUSTOMER_ID/searchads360:searchStream
https://searchads360.googleapis.com/VERSION_NUMBER/customers/CUSTOMER_ID/searchads360:search
以下是包含 searchStream
的完整報表定義範例,
HTTP POST
要求:
POST /VERSION_NUMBER/customers/CUSTOMER_ID/searchads360:searchStream HTTP/1.1 Host: searchads360.googleapis.com User-Agent: curl Content-Type: application/json Accept: application/json Authorization: Bearer [OAUTH_2.0_ACCESS_TOKEN] Parameters: { "query" : "SELECT campaign.name, campaign.status, segments.device, metrics.impressions, metrics.clicks, metrics.ctr, metrics.average_cpc, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_30_DAYS" }
處理回應
SearchAds360Service
會傳回 SearchAds360Row
物件的清單。
每個 SearchAds360Row
都代表查詢傳回的物件。每個物件
包含一組根據要求的欄位填入的屬性
在查詢的 SELECT
子句中插入憑證。SELECT
不包含的屬性
系統不會在回應中的物件中填入子句。
舉例來說,以下查詢會在每個 SearchAds360Row
物件中僅填入
campaign.id
、campaign.name
和campaign.status
。其他屬性,例如
campaign.engine_id
或 campaign.bidding_strategy_type
省略。
SELECT
campaign.id,
campaign.name,
campaign.status
FROM campaign
參考說明文件
「參考資料」部分
包含正確使用每個構件所需的所有資訊。另有
每項資源各一個網頁,例如 ad_group
campaign
。
「segments
」和「metrics
」頁面
列出所有可用區隔和指標欄位
部分資源、區隔和指標不相容,因此無法使用 有些元件則完全相容,彼此則相輔相成。每項 資源頁麵包含下列資訊 (如果有的話) 以及其他適當內容:
- 歸因資源
針對部分資源,您可以選擇 方法是選取資源欄位和
FROM
子句。舉例來說,campaign
資源是 專屬資源ad_group
。也就是說,您可以 在campaign.id
和campaign.bidding_strategy_type
中加入 在FROM
子句中使用ad_group
時,必須執行查詢。「歸因資源」部分會列出可用的歸因資源。非 所有資源都有歸因資源
- 資源欄位欄
資源的所有欄位都包含在「資源欄位」欄中。 每個資源欄位都會連結至該欄位的詳細資料,包括 說明、類別、資料類型、網址、可篩選、可選取、 可排序及重複的設定
- 區隔欄
並非所有的區隔欄位都可透過指定的資源選取。
區隔欄列出了
segments
您可以在SELECT
子句當做資源的欄位使用。每個欄位都會連結至完整的 欄位詳細資料,包括欄位說明、類別、資料類型、類型 「網址」和「可篩選」、「可選取」、「可排序」和「重複」設定如果您是 在FROM
子句中使用資源,即可透過「Yes/No」下拉式選單選擇 即可篩除無法使用的區隔- 指標欄
並非所有指標欄位都能搭配指定的資源選取。
「指標」指標欄列出了
metrics
您可以在SELECT
子句當做資源的欄位使用。每個欄位都會連結至完整的 欄位詳細資料,包括欄位說明、類別、資料類型、類型 「網址」和「可篩選」、「可選取」、「可排序」和「重複」設定如果您是 在FROM
子句中使用資源,並透過「Yes/No」下拉式選單進行以下操作: 會濾除不適用的指標 ,瞭解如何調查及移除這項存取權。
- 區隔資源
部分資源設有區隔資源欄位,您可以選取 資源位於
FROM
子句中舉例來說,如果您選取campaign
資源欄位,例如campaign.name
,何時 在FROM
子句中使用campaign_budget
,campaign.resource_name
會自動傳回並區隔開來,因為campaign
是 區隔資源:campaign_budget
。「區隔資源」一節會列出可用的區隔資源。非 所有資源都有區隔資源
- 可選取的項目
某些「
segments
」欄位與其他資源、區隔和 指標。「
segments
」頁面 包含每個segments
欄位可展開的「可選取」, 列出所有相容的資源欄位、metrics
欄位,以及其他segments
可加入SELECT
子句中的多個欄位。 ,瞭解如何調查及移除這項存取權。
區隔
如要區隔搜尋結果,您可以在名稱中加入
segments.FIELD_NAME
欄位改成查詢的 SELECT
子句。
舉例來說,segments.device
位於
查詢結果後,報表會自成一列,其中包含個別的 impressions
裝置是 FROM
子句中指定的資源。
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
SearchAds360Service.SearchStream
傳回的結果看起來像
例如以下 JSON 字串:
{
"results":[
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"10922"
},
"segments":{
"device":"MOBILE"
}
},
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"28297"
},
"segments":{
"device":"DESKTOP"
}
},
...
]
}
請參閱 segments
可用的區隔欄位清單。
多個區隔
您可以在查詢的 SELECT
子句中指定多個區隔。
回應包含一個 SearchAds360Row
物件,而
在 FROM
子句中指定的主要資源 instance 和
每個所選 segment
欄位的 value。
舉例來說,下列查詢會傳回每一種組合的一列
campaign
、segments.ad_network_type
和segments.date
。
SELECT
segments.ad_network_type
segments.date
FROM campaign
請注意,結果會按主要執行個體的每個例項,間接區隔 但不含個別所選欄位的值。
在以下範例中,系統會為每個廣告活動產生一列,而非每個資料列
指定 campaign.status
欄位的不重複值。
SELECT
campaign.status,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_14_DAYS
隱性區隔
每份報表一開始都是按照 FROM
中指定的資源區隔
子句。系統會按照這項資源的 resource_name
欄位區隔指標
這個範例查詢會自動傳回 ad_group.resource_name
,並以隱含方式傳回
用於區隔 ad_group
層級的指標。
SELECT metrics.impressions
FROM ad_group
傳回的 JSON 字串如下所示:
{
"results":[
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/2222222222"
},
"metrics":{
"impressions":"237"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/33333333333"
},
"metrics":{
"impressions":"15"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/44444444444"
},
"metrics":{
"impressions":"0"
}
}
]
}
核心日期區隔
您可以在 WHERE
子句中使用核心日期區隔來指定日期
或時間範圍
下列區隔欄位稱為「核心日期區隔」:
segments.date
、segments.week
、segments.month
、segments.quarter
和
segments.year
。
這個查詢範例會傳回最近 30 天的廣告活動「clicks
」指標。
SELECT
campaign.id,
campaign.name,
segments.date,
metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
核心日期區隔欄位屬於您一般規則的例外情況
無法在 WHERE
子句中使用區隔欄位,除非您也加入
加入 SELECT
子句中的欄位詳情請參閱禁用篩選
可能不準確或不適當
核心日期區隔規則:
您可以在
WHERE
子句中使用核心日期欄位,但不必將核心日期欄位加入SELECT
子句。如有需要,您也可以將欄位加進兩個子句中。此查詢範例會傳回指定日期範圍內,按廣告活動名稱劃分的
clicks
項指標 範圍。請注意,segments.date
並未包含在SELECT
子句中,SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2022-02-01' AND segments.date < '2022-03-01'
如果您在
SELECT
子句中加入核心日期欄位,就必須指定WHERE
子句中的有限日期或日期範圍。SELECT
和WHERE
子句不需要相符。此查詢範例會傳回按廣告活動名稱區隔的
clicks
項指標 表示該日期範圍內每一天的資料。SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2022-02-01' AND segments.date < '2022-03-01'
ISO 8601 日期
你可以使用 YYYY-MM-DD
(ISO 8601) 格式指定日期和日期範圍
例如:
WHERE segments.date BETWEEN '2022-06-01' AND '2022-06-30'
WHERE segments.date >= '2022-06-01' AND segments.date <= '2022-06-30'
針對需要一段時間的核心日期區隔 (segments.week
、
segments.month
、segments.quarter
) 時,您可以使用 =
運算子與
時間範圍的第一天,例如:
WHERE segments.month = '2022-06-01'
預先定義的日期
你也可以使用下列預先定義的日期和日期範圍:
預先定義的日期 | |
---|---|
TODAY |
僅限今天。 |
YESTERDAY |
僅限昨天。 |
LAST_7_DAYS |
過去 7 天 (不含今天)。 |
LAST_BUSINESS_WEEK |
前 5 個工作週 (週一至週五)。 |
THIS_MONTH |
當月所有日期。 |
LAST_MONTH |
上個月的所有日期。 |
LAST_14_DAYS |
過去 14 天 (不含今天)。 |
LAST_30_DAYS |
過去 30 天 (不含今天)。 |
THIS_WEEK_SUN_TODAY |
前一天到今天的經期。 |
THIS_WEEK_MON_TODAY |
時間範圍為上週一到今天。 |
LAST_WEEK_SUN_SAT |
從上一個星期日起算的 7 天。 |
LAST_WEEK_MON_SUN |
7 天 (從上個週一開始)。 |
範例:
WHERE segments.date DURING LAST_30_DAYS
零指標
執行查詢時,您可能會發現指標數值為零 實體。瞭解如何處理查詢中的零指標。
UNKNOWN 列舉類型
如果透過 UNKNOWN
列舉資料類型傳回資源,就表示
API 版本未完全支援該類型。這些資源
已透過其他介面所建立舉例來說,新的廣告活動或廣告
在 Search Ads 360 使用者介面中推出,但 API 版本尚未支援。
就能取得更符合需求的結果
資源屬於 UNKNOWN
類型時,您還是可以選取指標,但
必須注意以下幾點:
- 系統之後可能會支援類型為
UNKNOWN
的資源,但可能會繼續保留 無限期UNKNOWN
。 - 系統隨時可能會顯示類型為
UNKNOWN
的新物件。這些物件 回溯相容,因為列舉值已可用。我們介紹 隨時更新資源,確保您能取得正確的 帳戶檢視畫面UNKNOWN
資源可能會顯示於 您帳戶透過其他介面的活動,或是因為某項資源而產生的活動 不再受到正式支援 UNKNOWN
項資源可能已附加詳細指標,你可以 。UNKNOWN
資源通常會完整顯示在 Search Ads 360 使用者介面中。