При использовании API для получения ссылок на классы протокола требуется либо хорошее понимание API, либо частое обращение к справочной документации по протоколу для поиска точного пути к пространству имен.
ProtoLookupUtil
Вспомогательные методы поиска в GoogleAdsClient (на основе фабрик и ServiceLookup, которые заменили устаревший класс ProtoLookupUtil) позволяют искать и создавать экземпляры сервисов, операций, перечислений и ресурсов, не отслеживая номера версий API и пространства имен модулей. По умолчанию эти методы используют самую новую версию API, поддерживаемую установленным пакетом gem (V25 в последнем выпуске, где в неосновных выпусках API, например v25.1, используется модуль основной версии V25). Вы также можете указать явный префикс версии (например, v25) в вызове поиска.
Без утилиты поиска вы можете создать экземпляр ресурса кампании непосредственно из пространства имен с указанием версии:
campaign =
Google::Ads::GoogleAds::V25::Resources::Campaign.new
При использовании методов поиска клиентов вы можете создать экземпляр ресурса непосредственно из клиента:
campaign = client.resource.campaign
При получении ресурса, сервиса или операции возвращается экземпляр этого объекта:
# Instantiate an operation
operation = client.operation.campaign
Поиск сервиса
Используйте метод client.service для получения клиентов сервисов, даже если вы не используете эту утилиту для других объектов. client.service автоматически настраивает учетные данные для аутентификации и параметры транспорта в возвращенном клиенте сервиса:
campaign_service = client.service.campaign
Поиск перечисления
Для полей перечисления в сообщениях protobuf назначайте символ Ruby напрямую, а не через модуль перечисления:
campaign.status = :PAUSED
Чтобы проверить или перебрать все допустимые символы для перечисления во время выполнения, используйте client.enum, который возвращает Google::Protobuf::EnumDescriptor для этого перечисления:
status_enum = client.enum.campaign_status
status_enum.each { |status| p status }