Чтобы получать ссылки на классы proto при использовании API, нужно либо хорошо разбираться в API, либо часто искать в справочной документации по proto точный путь к пространству имен.
ProtoLookupUtil
Методы поиска в GoogleAdsClient (на основе Factories и ServiceLookup, заменяющие устаревший класс ProtoLookupUtil) позволяют искать и создавать экземпляры сервисов, операций, перечислений и ресурсов, не отслеживая номера версий API и пространства имен модулей. По умолчанию эти методы используют самую новую версию API, поддерживаемую установленным пакетом gem (V26 в последнем выпуске, где в неосновных выпусках API, например v25.1, используется модуль основной версии V25). Вы также можете указать явный префикс версии (например, v26) в вызове поиска.
Без утилиты поиска вы можете создать экземпляр ресурса кампании непосредственно из пространства имен с указанием версии:
campaign =
Google::Ads::GoogleAds::V26::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 }