Để tìm nạp tệp đối chiếu đến các lớp proto khi sử dụng API, bạn phải hiểu rõ API hoặc thường xuyên tra cứu tài liệu tham khảo về proto để biết đường dẫn không gian tên chính xác.
ProtoLookupUtil
Các phương thức tiện ích tra cứu trên GoogleAdsClient (được hỗ trợ bởi Factories và ServiceLookup, thay thế lớp ProtoLookupUtil cũ) cho phép bạn tra cứu và tạo các thực thể của dịch vụ, thao tác, kiểu liệt kê và tài nguyên mà không cần phải theo dõi số phiên bản API và không gian tên mô-đun. Theo mặc định, các phương thức này sử dụng phiên bản API cao nhất mà gem đã cài đặt của bạn hỗ trợ (V26 trong bản phát hành mới nhất, trong đó các bản phát hành API phụ như v25.1 sử dụng mô-đun phiên bản lớn V25), hoặc bạn có thể chỉ định tiền tố phiên bản rõ ràng (chẳng hạn như v26) trong lệnh gọi tra cứu.
Nếu không có tiện ích tra cứu, bạn sẽ tạo một thực thể tài nguyên chiến dịch ngay từ không gian tên được phân phiên bản của tài nguyên đó:
campaign =
Google::Ads::GoogleAds::V26::Resources::Campaign.new
Với các phương thức tra cứu ứng dụng, bạn có thể tạo thực thể tài nguyên ngay từ ứng dụng:
campaign = client.resource.campaign
Khi tìm nạp một tài nguyên, dịch vụ hoặc thao tác, một phiên bản của thực thể đó sẽ được trả về:
# Instantiate an operation
operation = client.operation.campaign
Tra cứu dịch vụ
Sử dụng phương thức client.service để tìm nạp các ứng dụng dịch vụ, ngay cả khi bạn không sử dụng tiện ích này cho các thực thể khác. client.service tự động định cấu hình thông tin xác thực và chế độ cài đặt truyền tải trên ứng dụng khách dịch vụ được trả về:
campaign_service = client.service.campaign
Tra cứu bảng liệt kê
Đối với các trường enum trên thông báo protobuf, hãy chỉ định trực tiếp một biểu tượng Ruby thay vì tra cứu mô-đun liệt kê:
campaign.status = :PAUSED
Để kiểm tra hoặc lặp lại tất cả các ký hiệu hợp lệ cho một kiểu liệt kê trong thời gian chạy, hãy sử dụng client.enum. Hàm này sẽ trả về Google::Protobuf::EnumDescriptor cho kiểu liệt kê đó:
status_enum = client.enum.campaign_status
status_enum.each { |status| p status }