Видео: Посмотрите доклад об обработке ошибок с семинара 2019 года
Ошибки могут быть вызваны неправильной настройкой среды, ошибкой в программном обеспечении или недопустимыми данными, введенными пользователем. Независимо от источника, вам необходимо устранить проблему и либо исправить код, либо добавить логику для обработки ошибки пользователя. В этом руководстве рассматриваются некоторые рекомендации по устранению ошибок в API Google Ads.
Обеспечение связи
Убедитесь, что у вас есть доступ к API Google Ads и правильно настроены параметры. Если ваш ответ возвращает какие-либо ошибки HTTP, внимательно их исправьте и убедитесь, что вы обращаетесь к тем сервисам, которые планируете использовать из своего кода.
Ваши учётные данные встроены в запрос для вашей аутентификации. Ознакомьтесь со структурой запросов и ответов API Google Ads, особенно если вы планируете обрабатывать вызовы без использования клиентских библиотек. Каждая клиентская библиотека поставляется с подробными инструкциями по включению учётных данных в файл конфигурации (см. файл README клиентской библиотеки).
Убедитесь, что вы используете правильные учётные данные. Наше краткое руководство поможет вам получить нужный набор. Например, следующий ответ об ошибке означает, что пользователь отправил неверные учётные данные для аутентификации:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
Если вы выполнили эти шаги и у вас по-прежнему возникают проблемы, пришло время заняться устранением ошибок API Google Ads.
Определение проблемы
API Google Ads обычно сообщает об ошибках в виде объекта JSON-сбоя, содержащего список ошибок в ответе. Эти объекты содержат код ошибки, а также сообщение с описанием причины её возникновения. Это первые сигналы о возможной проблеме.
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword/matchtype'.",
"location": { "operationIndex": "1" }
}
]
}
Все наши клиентские библиотеки генерируют исключения, инкапсулирующие ошибки в ответе. Для начала рекомендуется перехватить эти исключения и вывести сообщения в журнал или на экран устранения неполадок. Интеграция этой информации с другими зарегистрированными событиями в вашем приложении дает хорошее представление о том, что может вызывать проблему. После того, как вы определили ошибку в журналах, вам нужно будет выяснить, что она означает.
Исследование ошибки
Ознакомьтесь с нашей документацией по распространённым ошибкам , которая охватывает наиболее часто встречающиеся ошибки. В ней описывается сообщение об ошибке, соответствующие ссылки на API и способы её предотвращения или устранения.
Если в нашей документации по распространенным ошибкам ошибка конкретно не упоминается, обратитесь к нашей справочной документации и найдите строку ошибки.
Воспользуйтесь нашими каналами поддержки , чтобы получить доступ к другим разработчикам, которые делятся своим опытом работы с API. Возможно, кто-то уже столкнулся с вашей проблемой и решил её.
Если вы обнаружите какие-либо ошибки, которые не задокументированы, сообщите нам об этом на форуме.
За помощью в устранении неполадок с проверкой или ограничениями аккаунта обратитесь в Справочный центр Google Ads — API Google Ads наследует правила и ограничения основного продукта Google Ads.
Записи в блогах иногда могут оказаться полезными при устранении неполадок в вашем приложении.
После изучения ошибки настало время определить ее основную причину.
Определение причины
Проверьте сообщение об исключении, чтобы определить причину ошибки. После просмотра ответа проверьте запрос на возможную причину. Некоторые сообщения об ошибках Google Ads API содержат элемент fieldPathElements
в поле location
GoogleAdsError
, указывающий, где в запросе произошла ошибка. Например:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"operationIndex": "0",
"fieldPathElements": [ { "fieldName": "keyword" } ]
}
}
]
}
При устранении неполадок может оказаться, что ваше приложение предоставляет API неверную информацию. Мы настоятельно рекомендуем использовать интерактивную среду разработки (IDE), например Eclipse (бесплатную IDE с открытым исходным кодом, которая в основном используется для разработки на Java, но имеет плагины для других языков), для облегчения отладки. Она позволяет устанавливать точки останова и построчно выполнять код.
Дважды проверьте, соответствует ли запрос входным данным вашего приложения (например, название кампании может не попадать в запрос). Убедитесь, что отправляемая маска поля соответствует обновлениям, которые вы хотите внести — API Google Ads поддерживает разреженные обновления. Отсутствие поля в маске поля в запросе mutate означает, что API не должен его изменять. Если ваше приложение извлекает объект, вносит в него изменение и отправляет его обратно, возможно, вы записываете данные в поле, которое не поддерживает обновление. Проверьте описание поля в справочной документации, чтобы узнать, есть ли какие-либо ограничения на время и возможность обновления поля.
Как получить помощь
Не всегда возможно выявить и решить проблему самостоятельно. Задав вопрос на форуме, вы сделаете его доступным для тысяч разработчиков, которые, возможно, сталкивались с той же проблемой.
Постарайтесь включить в свои запросы как можно больше информации. Рекомендуемые пункты:
- Очищенные JSON-запрос и ответ. Убедитесь, что вы удалили конфиденциальную информацию, такую как токен разработчика или AuthToken.
- Фрагменты кода. Если у вас возникла проблема, связанная с языком, или вам нужна помощь с API, приложите фрагмент кода, чтобы объяснить, что вы делаете.
- RequestId. Это позволяет сотрудникам отдела по работе с разработчиками Google найти ваш запрос, если он отправлен в рабочую среду. Мы рекомендуем регистрировать в журналах requestId, включённый в качестве свойства в исключения, инкапсулирующие ошибки ответа, а также более широкий контекст, чем просто requestId.
- Дополнительная информация, такая как версия среды выполнения/интерпретатора и платформа, также может быть полезна при устранении неполадок.
Устранение проблемы
Теперь, когда вы выяснили проблему и нашли решение, пришло время внести изменения и протестировать исправление на тестовой учетной записи (предпочтительно) или на рабочей среде (если ошибка относится только к данным в определенной рабочей учетной записи).
Рассмотрите возможность поделиться
Если вы задали вопрос на форуме об ошибке, которая ранее там не встречалась, и нашли решение, попробуйте добавить его в тему. В следующий раз, когда у разработчика возникнет та же проблема, он сможет решить её сразу же.
Следующие шаги
Теперь, когда вы решили эту проблему, заметили ли вы какие-либо способы улучшить свой код, чтобы избежать этой проблемы изначально?
Создание качественного набора модульных тестов помогает значительно повысить качество и надёжность кода. Это также ускоряет процесс тестирования новых изменений, позволяя убедиться, что они не нарушают прежнюю функциональность. Эффективная стратегия обработки ошибок также играет ключевую роль в получении всех необходимых данных для устранения неполадок.