Przeczytaj poniższe sekcje, aby dowiedzieć się, jak tworzyć raporty wyszukiwania w interfejsie Search Ads 360 Reporting API.
Usługa wyszukiwania
Interfejs Search Ads 360 Reporting API udostępnia specjalną usługę do wyszukiwania i raportowania.
SearchAds360Service
to ujednolicona usługa pobierania i raportowania obiektów, która udostępnia 2 metody wyszukiwania: SearchStream
i Search
. Wyszukiwania są przekazywane w ciągu zapytania zapisanym w języku zapytań Search Ads 360. Możesz zdefiniować zapytania, aby:
- Pobieranie określonych atrybutów obiektów.
- Pobieranie danych o wydajności obiektów na podstawie zakresu dat.
- Porządkuj obiekty na podstawie ich atrybutów.
- Filtrowanie wyników za pomocą warunków określających, które obiekty mają zostać zwrócone
- Ogranicz liczbę zwracanych obiektów.
Obie metody wyszukiwania zwracają wszystkie wiersze pasujące do zapytania. Gdy np. pobierasz campaign.id
, campaign.name
i metrics.clicks
, interfejs API zwraca wartość SearchAds360Row
zawierającą obiekt kampanii z ustawionymi polami id
i name
oraz obiekt metrics
z zestawem pól clicks
.
Metody wyszukiwania
SearchStream
wysyła jedno żądanie i inicjuje trwałe połączenie z interfejsem Search Ads 360 Reporting API niezależnie od rozmiaru raportu.
- Pobieranie pakietów danych rozpoczyna się natychmiast, a cały wynik jest zapisywany w buforze danych.
- Kod może zacząć odczytywać dane zbuforowane bez konieczności czekania na zakończenie całego strumienia.
Search
Wysyła wiele podzielonych na strony żądań pobrania całego raportu.
SearchStream
zwykle zapewnia większą wydajność, ponieważ eliminuje konieczność przesyłania żądań do poszczególnych stron przez sieć w obie strony. Zalecamy użycie SearchStream
w przypadku wszystkich raportów,które mają więcej niż 10 000 wierszy. Różnice w skuteczności między metodami w przypadku mniejszych raportów (poniżej 10 000 wierszy) są takie same.
Używana metoda nie wpływa na limity interfejsu API: pojedyncze zapytanie czy raport jest liczone jako jedna operacja niezależnie od tego, czy wyniki są stronowane, czy przesyłane strumieniowo.
Przykładowe zapytanie
To przykładowe zapytanie zwraca dane o skuteczności konta z ostatnich 30 dni według kampanii, podzielone według urządzenia:
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
Poproś
Aby wysłać żądanie, musisz przekazać ciąg znaków customer_id
i query
do interfejsu SearchAds360Service.SearchStream
lub SearchAds360Service.Search
.
Żądanie składa się z protokołu POST
HTTP do serwera Search Ads 360 Reporting API pod jednym z tych adresów URL:
https://searchads360.googleapis.com/VERSION_NUMBER/customers/CUSTOMER_ID/searchads360:searchStream
https://searchads360.googleapis.com/VERSION_NUMBER/customers/CUSTOMER_ID/searchads360:search
Oto pełny przykład definicji raportu dotyczącego funkcji searchStream
zawartej w żądaniu 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" }
Przetwarzanie odpowiedzi
SearchAds360Service
zwraca listę obiektów SearchAds360Row
.
Każdy element SearchAds360Row
reprezentuje obiekt zwrócony przez zapytanie. Każdy obiekt składa się z zestawu atrybutów wypełnianych na podstawie pól żądanych w klauzuli SELECT
zapytania. Atrybuty, które nie są uwzględnione w klauzuli SELECT
, nie są wypełniane w obiektach w odpowiedzi.
Na przykład podane niżej zapytanie wypełnia każdy obiekt SearchAds360Row
tylko właściwościami campaign.id
, campaign.name
i campaign.status
. Inne atrybuty, takie jak campaign.engine_id
czy campaign.bidding_strategy_type
, są pomijane.
SELECT
campaign.id,
campaign.name,
campaign.status
FROM campaign
Dokumentacja źródłowa
Sekcja Dokumentacja zawiera wszystkie informacje potrzebne do prawidłowego korzystania z poszczególnych artefaktów. Każdy zasób ma 1 stronę, na przykład ad_group
i campaign
.
Na stronach segments
i metrics
znajdziesz wszystkie dostępne pola segmentów i danych.
Niektóre zasoby, segmenty i wskaźniki są niezgodne i nie mogą być używane razem, a inne są w pełni zgodne i uzupełniają się nawzajem. Każda strona zasobów zawiera m.in. te informacje (jeśli są dostępne i odpowiednie):
- Przypisane zasoby
W przypadku niektórych zasobów możesz wybrać opcję pośredniego złączenia powiązanych zasobów, wybierając ich pola razem z polami zasobu w klauzuli
FROM
. Na przykład zasóbcampaign
jest przypisanym zasobemad_group
. Oznacza to, że możesz uwzględniać w zapytaniu pola takie jakcampaign.id
icampaign.bidding_strategy_type
, gdy używasz w zapytaniuad_group
w klauzuliFROM
.W sekcji Przypisane zasoby znajdziesz listę dostępnych zasobów. Nie wszystkie zasoby mają przypisane zasoby.
- Kolumna pól zasobów
Wszystkie pola zasobu są uwzględnione w kolumnie Pola zasobu. Każde pole zasobu zawiera linki do dodatkowych informacji na temat pola, w tym do jego opisu, kategorii, typu danych, adresu URL typu oraz ustawienia z możliwością filtrowania, wyboru, sortowania i powtarzania.
- Kolumna Segmenty
Nie wszystkie pola segmentów można wybrać z danym zasobem.
Kolumna Segmenty zawiera listę pól
segments
, których możesz używać w tej samej klauzuliSELECT
, co pola zasobu. Każde pole zawiera linki do szczegółowych informacji o polu, w tym do jego opisu, kategorii, typu danych, typu danych oraz ustawienia z możliwością filtrowania, wyboru, sortowania i powtarzania. Jeśli używasz zasobu w klauzuliFROM
, za pomocą menu Tak/Nie możesz odfiltrować segmenty, które są niedostępne.- Kolumna danych
Nie wszystkie pola wskaźników można wybrać dla danego zasobu.
Kolumna Wskaźniki zawiera listę pól
metrics
, których możesz używać w tej samej klauzuliSELECT
co pola zasobu. Każde pole zawiera linki do szczegółowych informacji o polu, w tym do jego opisu, kategorii, typu danych, typu danych oraz ustawienia z możliwością filtrowania, wyboru, sortowania i powtarzania. Jeśli używasz zasobu w klauzuliFROM
, za pomocą menu Tak/Nie odfiltruj niedostępne wskaźniki.
- Podział zasobów na segmenty
Niektóre zasoby mają pola zasobów do podziału na segmenty, które możesz wybrać, gdy zasób znajduje się w klauzuli
FROM
. Jeśli na przykład wybierzesz pole zasobucampaign
, takie jakcampaign.name
, podczas korzystania zcampaign_budget
w klauzuliFROM
automatycznie zwrócimy wartośćcampaign.resource_name
i będziesz ją posegmentować, ponieważcampaign
jest zasobem do podziału na segmentycampaign_budget
.Sekcja Zasoby do podziału na segmenty zawiera listę dostępnych zasobów służących do podziału na segmenty. Nie wszystkie zasoby mają zasoby umożliwiające segmentację.
- Do wyboru w przypadku
Niektóre pola
segments
są niezgodne z innymi zasobami, segmentami i danymi.Strona
segments
zawiera rozwinięcie Do wyboru w przypadku każdego polasegments
, które zawiera listę wszystkich zgodnych pól zasobów, pólmetrics
i innych pólsegments
, które można uwzględnić w klauzuliSELECT
.
Podział na segmenty
Możesz podzielić wyniki wyszukiwania, dodając pole segments.FIELD_NAME
do klauzuli SELECT
zapytania.
Na przykład zapytanie segments.device
w poniższym zapytaniu spowoduje wygenerowanie raportu z wierszem reprezentującym impressions
każdego urządzenia dla zasobu określonego w klauzuli FROM
.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
Wyniki zwrócone przez SearchAds360Service.SearchStream
wyglądają mniej więcej tak jak ten ciąg 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"
}
},
...
]
}
Listę dostępnych pól segmentów, których możesz użyć, znajdziesz segments
.
Wiele segmentów
W klauzuli SELECT
zapytania możesz określić wiele segmentów. Odpowiedź zawiera po 1 obiekcie SearchAds360Row
na każdą kombinację instancji zasobu głównego określonego w klauzuli FROM
i wartość każdego wybranego pola segment
.
To zapytanie zwróci na przykład po 1 wierszu na każdą kombinację właściwości campaign
, segments.ad_network_type
i segments.date
.
SELECT
segments.ad_network_type
segments.date
FROM campaign
Pamiętaj, że wyniki są domyślnie podzielone na segmenty według poszczególnych wystąpień głównego zasobu, ale nie według wartości poszczególnych wybranych pól.
Poniższe przykładowe zapytanie daje 1 wiersz na kampanię, a nie 1 wiersz na różną wartość w polu campaign.status
.
SELECT
campaign.status,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_14_DAYS
Pośrednicza segmentacja
Każdy raport jest wstępnie podzielony na segmenty według zasobu określonego w klauzuli FROM
. Wskaźniki są podzielone na segmenty według pola resource_name
tego zasobu
To przykładowe zapytanie automatycznie zwraca właściwość ad_group.resource_name
i niejawnie wykorzystuje ją do podziału danych na segmenty na poziomie ad_group
.
SELECT metrics.impressions
FROM ad_group
Zwrócony ciąg JSON wygląda podobnie do tego:
{
"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"
}
}
]
}
Podstawowe segmenty dat
Aby określić datę lub okres, w klauzuli WHERE
możesz używać podstawowych segmentów dat.
Te pola segmentów są nazywane głównymi segmentami dat: segments.date
, segments.week
, segments.month
, segments.quarter
i segments.year
.
To przykładowe zapytanie zwraca dane clicks
kampanii z ostatnich 30 dni.
SELECT
campaign.id,
campaign.name,
segments.date,
metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
Podstawowe pola segmentów dat są wyjątkiem od ogólnej reguły, zgodnie z którym w klauzuli WHERE
nie można używać pola segmentów, chyba że dodasz też to pole w klauzuli SELECT
. Więcej informacji znajdziesz w sekcji Niedozwolone filtrowanie.
Podstawowe reguły segmentu dat:
W klauzuli
WHERE
możesz użyć podstawowego pola daty, nie dodając go w klauzuliSELECT
. Jeśli chcesz, możesz to zrobić w obu klauzulach.To przykładowe zapytanie zwraca
clicks
rodzajów danych według nazwy kampanii w wybranym zakresie dat. Zwróć uwagę, że klauzulaSELECT
nie obejmuje elementusegments.date
.SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2022-02-01' AND segments.date < '2022-03-01'
Jeśli w klauzuli
SELECT
uwzględnione jest podstawowe pole daty, w klauzuliWHERE
musisz określić skończoną datę lub zakres dat. Pola określone w klauzulachSELECT
iWHERE
nie muszą być takie same.To przykładowe zapytanie zwraca dane
clicks
według nazwy kampanii posegmentowane według miesiąca i obejmują wszystkie dni w zakresie dat.SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2022-02-01' AND segments.date < '2022-03-01'
Daty w formacie ISO 8601
Daty i zakresy dat możesz określić w formacie YYYY-MM-DD
(ISO 8601), na przykład:
WHERE segments.date BETWEEN '2022-06-01' AND '2022-06-30'
WHERE segments.date >= '2022-06-01' AND segments.date <= '2022-06-30'
W przypadku podstawowych segmentów dat, które wymagają przedziału czasu (segments.week
, segments.month
, segments.quarter
), możesz użyć operatora =
z pierwszym dniem przedziału czasu, np.:
WHERE segments.month = '2022-06-01'
Wstępnie zdefiniowane daty
Możesz też korzystać z tych wstępnie zdefiniowanych dat i zakresów dat:
Wstępnie zdefiniowane daty | |
---|---|
TODAY |
Tylko dzisiaj. |
YESTERDAY |
Tylko wczoraj. |
LAST_7_DAYS |
Ostatnie 7 dni (bez bieżącego dnia). |
LAST_BUSINESS_WEEK |
Poprzedni 5-dniowy tydzień roboczy (od poniedziałku do piątku) |
THIS_MONTH |
Wszystkie dni w bieżącym miesiącu. |
LAST_MONTH |
Wszystkie dni w poprzednim miesiącu. |
LAST_14_DAYS |
Poprzednie 14 dni (z wyłączeniem dzisiaj). |
LAST_30_DAYS |
Ostatnie 30 dni (nie licząc dnia dzisiejszego). |
THIS_WEEK_SUN_TODAY |
Okres od poprzedniej niedzieli do dnia bieżącego. |
THIS_WEEK_MON_TODAY |
Okres między poprzednim poniedziałkiem a dniem bieżącym. |
LAST_WEEK_SUN_SAT |
7-dniowy okres od poprzedniej niedzieli. |
LAST_WEEK_MON_SUN |
7-dniowy okres od poprzedniego poniedziałku. |
Przykład:
WHERE segments.date DURING LAST_30_DAYS
Zero danych
Podczas wykonywania zapytania możesz napotkać dla niektórych elementów wskaźniki z wartością 0. Więcej informacji o obsłudze w zapytaniach danych zerowych
UNKNOWN typów wyliczeniowych
Jeśli zasób jest zwracany z typem danych wyliczenia UNKNOWN
, oznacza to, że ten typ nie jest w pełni obsługiwany przez wersję interfejsu API. Te zasoby mogły zostać utworzone
za pomocą innych interfejsów. Przykład: nowa kampania lub reklama pojawiają się w interfejsie Search Ads 360, ale nie są jeszcze obsługiwane w wersji interfejsu API, której dotyczy Twoje zapytanie.
Nadal możesz wybierać wskaźniki, gdy zasób ma typ UNKNOWN
, ale musisz pamiętać o tych kwestiach:
- Zasób typu
UNKNOWN
może być obsługiwany później, ale może pozostawać bez ograniczeń czasowychUNKNOWN
. - W każdej chwili mogą pojawić się nowe obiekty typu
UNKNOWN
. Obiekty te są zgodne wstecznie, ponieważ wartość wyliczenia jest już dostępna. Wraz z tą zmianą wprowadzamy zasoby, które są dostępne, aby zapewnić Ci dokładny wgląd w Twoje konto. ZasóbUNKNOWN
może się pojawić w wyniku nowej aktywności na Twoim koncie w innych interfejsach lub gdy nie jest już oficjalnie obsługiwany. - Zasoby
UNKNOWN
mogą mieć dołączone szczegółowe wskaźniki, do których możesz wysyłać zapytania. UNKNOWN
zasobów jest zwykle w pełni widocznych w interfejsie Search Ads 360.