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 cần thiết để sử dụng API trong Python có thể chi tiết và đòi hỏi 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 các proto hoặc tài liệu.

Các 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 kiểu nào trong API. Phương thức get_service được dùng để truy xuất các ứng dụng dịch vụ. get_type được dùng cho mọi đối tượng khác. Các lớp của ứ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 theo nhiều danh mục đối tượng google/ads/googleads/v*/common|enums|errors|resources|services/types/. Tất cả mã trong 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, phòng 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 v17 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v17")
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 một thực thể Campaign.

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v17")
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ải Enum một cách linh động bằng cơ chế giống như phương thức get_type. Giao diện này đơn giản và dễ đọc hơn so với sử dụng get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

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 theo 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 viên. Làm việc với thực thể campaign của ví dụ trước trong một bản sao lưu 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ư trình bày ở trên. Bạn có thể truy cập vào 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 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ề 2 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 của API được duy trì cùng lúc. Mặc dù v17 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 một 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 chạy một ứng dụng để ứng dụng luôn trả về thực thể từ phiên bản cụ thể đó:

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

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

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

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

Nếu bạn không cung cấp tham số từ khoá version, thì thư viện sẽ mặc định 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 hiện có khá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.