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
SearchStreamWysył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.
SearchWysyła wiele żądań podziału na strony, aby pobrać cały raport.
SearchStreamzazwyczaj 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óbcampaignjest przypisanym zasobemad_group. Oznacza to, że możesz uwzględniać w zapytaniu pola takie jakcampaign.idicampaign.bidding_strategy_type, jeśli używasz w klauzuliFROMpolaad_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 klauzuliSELECTco 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 klauzuliSELECTco 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 klauzuliFROMużyjesz polacampaign_budget, polecampaign.resource_namebędzie automatycznie zwracane i segmentowane, ponieważcampaignjest 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
segmentssą niezgodne z innymi zasobami, segmentami i danymi.Na stronie
segmentsznajduje się pole wyboru, które można rozwinąć w przypadku każdego polasegments, aby wyświetlić listę wszystkich kompatybilnych pól zasobów, pólmetricsi 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
WHEREmoż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
clickswedług nazwy kampanii w zakresie dat. Pamiętaj, żesegments.datenie 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
SELECTuwzględnisz podstawowe pole daty, w klauzuliWHEREmusisz podać konkretną datę lub zakres dat. Pola określone w klauzulachSELECTiWHEREnie muszą być takie same.To przykładowe zapytanie zwraca dane
clickswedł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
UNKNOWNmoże zostać obsługiwany w przyszłości, ale może też pozostać w stanieUNKNOWNw nieskończoność. - Nowe obiekty typu
UNKNOWNmogą 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óbUNKNOWNmoż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
UNKNOWNmogą mieć szczegółowe dane, do których możesz się odwoływać. - Zasoby usługi
UNKNOWNsą zwykle w pełni widoczne w interfejsie Search Ads 360.