W poniższych sekcjach dowiesz się, jak tworzyć raporty wyszukiwania w interfejsie Search Ads 360 Reporting API.
Usługa wyszukiwania
Interfejs Search Ads 360 Reporting API zapewnia specjalną usługę wyszukiwania i raportowania.
SearchAds360Service
to zintegrowana usługa wyszukiwania i raportowania obiektów, która udostępnia 2 metody wyszukiwania: SearchStream
i Search
. Wyszukiwania są przekazywane w postaci ciągu zapytania 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ądkować obiekty według 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 dane campaign.id
, campaign.name
i metrics.clicks
, interfejs API zwraca obiekt SearchAds360Row
zawierający obiekt kampanii z ustawionymi polami id
i name
oraz obiekt metrics
z ustawionym polem clicks
.
Metody wyszukiwania
SearchStream
Wysyła 1 żądanie i inicjuje trwałe połączenie z interfejsem Search Ads 360 Reporting API niezależnie od rozmiaru raportu.
- Pakiety danych zaczynają się pobierać natychmiast, a cały wynik jest przechowywany w buforze danych.
- Twój kod może zacząć odczytywać zbuforowane dane bez konieczności czekania na zakończenie całego strumienia.
Search
Wysyła wiele żądań podziału na strony, aby pobrać cały raport.
SearchStream
zazwyczaj zapewnia lepszą wydajność, ponieważ eliminuje czas potrzebny na przesyłanie i odbieranie danych przez sieć w przypadku poszczególnych stron. Zalecamy używanie formatu SearchStream
w przypadku wszystkich raportów zawierających ponad 10 tys. wierszy. Nie ma istotnych różnic w skuteczności między metodami w przypadku mniejszych raportów (poniżej 10 000 wierszy).
Metoda, której używasz, nie ma wpływu na kwoty i limity interfejsu API: pojedyncze zapytanie lub raport jest liczone jako 1 operacja niezależnie od tego, czy wyniki są pobierane w postaci stron czy strumieniowo.
Przykładowe zapytanie
To przykładowe zapytanie zwraca dane o skuteczności konta z ostatnich 30 dni według kampanii podzielone na segmenty 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 customer_id
i query
do interfejsu SearchAds360Service.SearchStream
lub SearchAds360Service.Search
.
Żądanie składa się z żądania HTTP POST
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 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, które są wypełniane na podstawie pól określonych w klauzuli SELECT
w zapytaniu. Atrybuty, których nie ma w klauzuli SELECT
, nie są wypełniane w obiektach w odpowiedzi.
Na przykład poniższe zapytanie wypełnia każdy obiekt SearchAds360Row
tylko wartościami campaign.id
, campaign.name
i campaign.status
. Inne atrybuty, takie jak campaign.engine_id
lub campaign.bidding_strategy_type
, są pomijane.
SELECT
campaign.id,
campaign.name,
campaign.status
FROM campaign
Dokumentacja źródłowa
Sekcja Informacje zawiera wszystkie informacje potrzebne do prawidłowego korzystania z każdego artefaktu. Dla każdego zasobu jest jedna strona, np. ad_group
i campaign
.
Na stronach segments
i metrics
znajduje się lista wszystkich dostępnych pól segmentów i danych.
Niektóre zasoby, segmenty i dane są ze sobą niezgodne i nie można ich używać razem, a inne są w pełni zgodne i wzajemnie się uzupełniają. Każda strona zasobu zawiera te informacje (jeśli są dostępne i odpowiednie):
- Przypisane zasoby
W przypadku niektórych zasobów możesz mieć możliwość dołączania zasobów powiązanych w sposób domyślny, 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
, jeśli używasz w klauzuliFROM
polaad_group
.W sekcji Zasoby przypisane wymieniono dostępne zasoby przypisane. Nie wszystkie zasoby mają przypisane zasoby.
- Kolumna Pola zasobów
Wszystkie pola zasobu są widoczne w kolumnie Pola zasobów. Każde pole zasobu zawiera link do dodatkowych informacji o polu, w tym opisu, kategorii, typu danych, adresu URL typu oraz ustawień filtrowania, wybierania, sortowania i powtarzania.
- Kolumna Segmenty
Nie wszystkie pola segmentów można wybrać z danym zasobem.
W kolumnie Segmenty wymienione są pola
segments
, których możesz używać w tej samej klauzuliSELECT
co pola zasobu. Każde pole zawiera szczegółowe informacje na jego temat, w tym jego opis, kategorię, typ danych, typ danych, a także ustawienia z możliwością filtrowania, wyboru, sortowania i powtarzania. Jeśli używasz zasobu w klauzuliFROM
, możesz użyć menu Tak/Nie, aby odfiltrować segmenty, które są niedostępne.- Kolumna danych
Nie wszystkie pola wskaźników można wybrać z danym zasobem.
W kolumnie Dane wymienione są pola
metrics
, których możesz używać w tej samej klauzuliSELECT
co pola zasobu. Każde pole zawiera link do pełnych informacji o polu, w tym opisu, kategorii, typu danych, adresu URL typu oraz ustawień filtrowania, wybierania, sortowania i powtarzania. Jeśli używasz zasobu w klauzuliFROM
, użyj menu Tak/Nie, aby odfiltrować dane, które są niedostępne.
- Podział zasobów na segmenty
Niektóre zasoby mają pola zasobów segmentujących, które możesz wybrać, gdy zasób znajduje się w klauzuli
FROM
. Jeśli na przykład wybierzesz pole zasobucampaign
, np.campaign.name
, a w klauzuliFROM
użyjesz polacampaign_budget
, polecampaign.resource_name
będzie automatycznie zwracane i segmentowane, ponieważcampaign
jest zasobem segmentującymcampaign_budget
.W sekcji Zasoby do segmentacji znajdziesz listę dostępnych zasobów do segmentacji. Nie wszystkie zasoby mają zasoby segmentujące.
- Dostępne w ramach
Niektóre pola
segments
są niezgodne z innymi zasobami, segmentami i danymi.Na stronie
segments
znajduje się pole wyboru, które można rozwinąć w przypadku każdego polasegments
, aby wyświetlić listę wszystkich kompatybilnych pól zasobów, pólmetrics
i innych pólsegments
, które możesz uwzględnić w klauzuliSELECT
.
Podział na segmenty
Możesz podzielić wyniki wyszukiwania na segmenty, dodając pole segments.FIELD_NAME
do klauzuli SELECT
zapytania.
Na przykład segments.device
w zapytaniu poniżej powoduje, że raport zawiera wiersz z wartością 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:
{
"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"
}
},
...
]
}
Na stronie segments
znajdziesz listę dostępnych pól segmentów, których możesz używać.
Wiele segmentów
W klauzuli SELECT
zapytania możesz określić wiele segmentów. Odpowiedź zawiera 1 obiekt SearchAds360Row
dla każdej kombinacji wystąpienia zasobu głównego określonego w klauzuli FROM
oraz wartości każdego wybranego pola segment
.
Na przykład to zapytanie zwróci po 1 wierszu na każdą kombinację wartoś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 dzielone na segmenty według każdego wystąpienia głównego zasobu, ale nie według wartości poszczególnych wybranych pól.
Podany poniżej przykładowy wynik zapytania zawiera 1 wiersz na kampanię, a nie 1 wiersz na każdą niepowtarzalną wartość pola campaign.status
.
SELECT
campaign.status,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_14_DAYS
Podział na segmenty w ramach kampanii
Każdy raport jest początkowo dzielony na segmenty według zasobu określonego w klauzuli FROM
. Dane są dzielone na segmenty według pola resource_name
tego zasobu
To przykładowe zapytanie automatycznie zwraca wartość ad_group.resource_name
i używa jej do podziału danych na segmenty na poziomie ad_group
.
SELECT metrics.impressions
FROM ad_group
Zwrócony ciąg JSON wygląda mniej więcej tak:
{
"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 przedział czasu, możesz użyć podstawowych segmentów dat w klauzuli WHERE
.
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
Pola podstawowych segmentów dat są wyjątkiem od ogólnej reguły, że nie możesz używać pola segmentów w nawiasach klamrowych WHERE
, chyba że uwzględnisz to pole również w nawiasach klamrowych SELECT
. Więcej informacji znajdziesz w sekcji Zabronione filtrowanie.
Podstawowe reguły segmentu dat:
W klauzuli
WHERE
możesz użyć podstawowego pola daty bez uwzględniania go w klauzuliSELECT
. Jeśli chcesz, możesz też uwzględnić to pole w obu klauzulach.To przykładowe zapytanie zwraca dane
clicks
według nazwy kampanii w zakresie dat. Pamiętaj, żesegments.date
nie jest uwzględniona w klauzuliSELECT
.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ędnisz podstawowe pole daty, w klauzuliWHERE
musisz podać konkretną 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 pogrupowane według miesiąca i obejmujące 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,
Do określania dat i zakresów dat możesz używać formatu 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ą okresu czasu (segments.week
, segments.month
, segments.quarter
), możesz użyć operatora =
z pierwszym dniem okresu czasu, na przykład:
WHERE segments.month = '2022-06-01'
Wstępnie zdefiniowane daty
Możesz też użyć tych wstępnie zdefiniowanych dat i zakresów dat:
Wstępnie zdefiniowane daty | |
---|---|
TODAY |
Tylko dzisiaj. |
YESTERDAY |
Tylko wczoraj. |
LAST_7_DAYS |
W ciągu poprzednich 7 dni (bez bieżącego dnia). |
LAST_BUSINESS_WEEK |
Poprzednie 5 dni roboczych (od poniedziałku do piątku). |
THIS_MONTH |
Wszystkie dni bieżącego miesiąca. |
LAST_MONTH |
Wszystkie dni poprzedniego miesiąca. |
LAST_14_DAYS |
Ostatnie 14 dni (z wyłączeniem dnia dzisiejszego). |
LAST_30_DAYS |
Ostatnie 30 dni z wyłączeniem dnia dzisiejszego. |
THIS_WEEK_SUN_TODAY |
Okres między poprzednią niedzielą a dniem bieżącym. |
THIS_WEEK_MON_TODAY |
Okres między poprzednim poniedziałkiem a dniem bieżącym. |
LAST_WEEK_SUN_SAT |
7-dniowy okres rozpoczynający się w poprzednią niedzielę. |
LAST_WEEK_MON_SUN |
7-dniowy okres od poprzedniego poniedziałku. |
Przykład:
WHERE segments.date DURING LAST_30_DAYS
Dane o wartości 0
Podczas wykonywania zapytania w przypadku niektórych elementów możesz natrafić na wskaźniki z wartością 0. Dowiedz się, jak obsługiwać dane o wartości 0 w zapytaniach
Typy enum UNKNOWN
Jeśli zasób jest zwracany z typem danych UNKNOWN
enum, oznacza to, że typ nie jest w pełni obsługiwany w tej wersji interfejsu API. Zasoby te mogły zostać utworzone
przez inne interfejsy. Na przykład nowa kampania lub reklama została wprowadzona w interfejsie Search Ads 360, ale nie jest jeszcze obsługiwana w wersji interfejsu API, z której wysyłasz zapytanie.
Nadal możesz wybierać dane, gdy zasób ma typ UNKNOWN
, ale musisz pamiętać o tych kwestiach:
- Zasób o typie
UNKNOWN
może zostać obsługiwany w przyszłości, ale może też pozostać w stanieUNKNOWN
w nieskończoność. - Nowe obiekty typu
UNKNOWN
mogą pojawić się w dowolnym momencie. Te obiekty są zgodne wstecznie, ponieważ wartość typu enum jest już dostępna. Wraz z wprowadzeniem tej zmiany udostępniamy odpowiednie materiały, aby zapewnić Ci dokładny wgląd w stan Twojego konta. ZasóbUNKNOWN
może się pojawić z powodu nowej aktywności na Twoim koncie w innych interfejsach lub dlatego, że zasób przestał być oficjalnie obsługiwany. - Zasoby
UNKNOWN
mogą mieć szczegółowe dane, do których możesz się odwoływać. - Zasoby usługi
UNKNOWN
są zwykle w pełni widoczne w interfejsie Search Ads 360.