Phương thức getter dịch vụ và loại

Việc tìm nạp thông tin tham chiếu đến tất cả các lớp proto khác nhau cần thiết để sử dụng API trong Python có thể chi tiết và yêu cầu bạn phải có hiểu biết nội tại về API hoặc thường xuyên chuyển đổi ngữ cảnh để tham chiếu đến các proto hoặc tài liệu.

Phương thức get_serviceget_type của ứng dụng

Hai phương thức getter này cho phép bạn truy xuất bất kỳ dịch vụ hoặc đối tượng loại nào trong API. Phương thức get_service được dùng để truy xuất ứng dụng dịch vụ. get_type được dùng cho mọi đối tượng khác. Lớp ứng dụng dịch vụ được xác định trong mã theo đường dẫn phiên bản google/ads/googleads/v*/services/services/ và tất cả các loại được xác định trong nhiều danh mục đối tượng google/ads/googleads/v*/common|enums|errors|resources|services/types/. Tất cả mã bên dưới thư mục phiên bản đều được tạo. Vì vậy, phương pháp hay nhất là sử dụng các phương thức này thay vì nhập trực tiếp đối tượng, trong trường hợp cấu trúc của cơ sở mã thay đổi.

Dưới đây là ví dụ về cách sử dụng phương thức get_service để truy xuất một thực thể của ứng dụng GoogleAdsService.

from google.ads.googleads.client import GoogleAdsClient

# "load_from_storage" loads your API credentials from disk so they
# can be used for service initialization. Providing the optional `version`
# parameter means that the v16 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v16")
googleads_service = client.get_service("GoogleAdsService")

Dưới đây là ví dụ về cách sử dụng phương thức get_type để truy xuất thực thể Campaign.

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v16")
campaign = client.get_type("Campaign")

Enum

Mặc dù bạn có thể sử dụng phương thức get_type để truy xuất Enum, nhưng mỗi thực thể GoogleAdsClient cũng có một thuộc tính enums tự động tải Enum bằng cách sử dụng cơ chế tương tự như phương thức get_type. Giao diện này được thiết kế để đơn giản và dễ đọc hơn so với sử dụng get_type:

client = GoogleAdsClient.load_from_storage(version=v16)

campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED

Các trường đối tượng proto là enum được biểu thị bằng Python bằng loại enum gốc. Điều đó có nghĩa là bạn có thể dễ dàng đọc giá trị của thành phần. Làm việc với thực thể campaign từ ví dụ trước trong bản repl Python:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

Đôi khi, bạn nên biết tên của trường tương ứng với giá trị enum như minh hoạ ở trên. Bạn có thể truy cập thông tin này bằng thuộc tính name:

>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>

Việc tương tác với các enum sẽ khác nhau tuỳ thuộc vào việc bạn đã đặt cấu hình use_proto_plus thành true hay false. Để biết thông tin chi tiết về hai giao diện, hãy xem tài liệu về thông báo protobuf.

Lập phiên bản

Nhiều phiên bản API được duy trì cùng một lúc. Mặc dù v16 có thể là phiên bản mới nhất, nhưng bạn vẫn có thể truy cập vào các phiên bản cũ cho đến khi chúng ngừng hoạt động. Thư viện này sẽ bao gồm các lớp thông báo proto riêng biệt tương ứng với từng phiên bản API đang hoạt động. Để truy cập vào lớp thông báo cho một phiên bản cụ thể, hãy cung cấp tham số từ khoá version khi khởi động ứng dụng để ứng dụng này luôn trả về thực thể từ phiên bản nhất định đó:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v16/")
# The Campaign instance will be from the v16 version of the API.
campaign = client.get_type("Campaign")

Bạn cũng có thể chỉ định phiên bản khi gọi phương thức get_serviceget_type. Thao tác này sẽ ghi đè phiên bản đã cung cấp khi khởi chạy ứng dụng:

client = GoogleAdsService.load_from_storage()
# This will load the v16 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v16")

client = GoogleAdsService.load_from_storage(version="v16")
# This will load the v14 version of a Campaign.
campaign = client.get_type("Campaign", version="v14")

Nếu bạn không cung cấp tham số từ khoá version, thì theo mặc định, thư viện sẽ sử dụng phiên bản mới nhất. Bạn có thể tìm thấy danh sách cập nhật về các phiên bản mới nhất và các phiên bản khác hiện có trong phần điều hướng bên trái của tài liệu Tài liệu tham khảo API.