Как переходить между страницами результатов

Вы можете просматривать результаты, полученные с помощью GoogleAdsService.Search, постранично, а не скачивать весь набор результатов сразу. Общие сведения об отчетах в Google Ads API можно найти в этой статье.

Search возвращает фиксированные страницы,содержащие до 10 000 строк. Задание параметра page_size в SearchGoogleAdsRequest больше не поддерживается и возвращает ошибку RequestError.PAGE_SIZE_NOT_SUPPORTED.

Пример запроса и разбивки на страницы

Рассмотрим следующий запрос:

SELECT
  ad_group.id,
  ad_group_criterion.type,
  ad_group_criterion.criterion_id,
  ad_group_criterion.keyword.text,
  ad_group_criterion.keyword.match_type
FROM ad_group_criterion
WHERE ad_group_criterion.type = KEYWORD

Если в аккаунте 50 000 ключевых слов, то в первом ответе будет 10 000 объектов GoogleAdsRow и next_page_token.

Чтобы получить следующие 10 000 строк, отправьте запрос ещё раз, но замените значение page_token в запросе на значение next_page_token в ответе:

{
  "query": "SELECT ad_group.id, ad_group_criterion.type, ad_group_criterion.criterion_id, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type FROM ad_group_criterion WHERE ad_group_criterion.type = KEYWORD",
  "pageToken": "CN3q9...example_token..."
}

Обратите внимание, что в ответе, содержащем последний пакет строк, поле next_page_token не заполнено.

Наши клиентские библиотеки обрабатывают разбиение на страницы автоматически. Вам нужно только перебрать строки ответа. Когда все строки на текущей странице будут возвращены, клиентская библиотека автоматически получит новую страницу строк от вашего имени, пока не будет получен весь набор данных. Если вы используете REST вместо gRPC, то должны явно отправлять запрос для каждой новой страницы.

Кеширование и срок действия токена страницы

Google Ads API кеширует набор данных, чтобы последующие запросы страниц выполнялись быстрее, чем первый. Обратите внимание, что у значений next_page_token ограниченный срок действия (TTL). Они становятся недействительными, если не используются в течение короткого периода (около двух часов). Если срок действия токена страницы истек, API возвращает ошибку и вам нужно начать новый запрос.

Чтобы использовать кешированные данные, запрос должен оставаться идентичным в последующих запросах. Последующие запросы страниц не считаются дополнительными операциями и не учитываются в дневной квоте на операции для доступа Explorer и базового доступа. Если запрос отличается и отправляется с тем же токеном страницы, возвращается ошибка.