การดึงข้อมูลอ้างอิงไปยังคลาส Proto ต่างๆ ทั้งหมดที่จำเป็นต่อการใช้ API ใน Python อาจมีรายละเอียดมากและกำหนดให้คุณต้องมีความเข้าใจในตัว API หรือสลับบริบทบ่อยๆ เพื่ออ้างอิง Proto หรือเอกสารประกอบ
เมธอด get_service
และ get_type
ของไคลเอ็นต์
เมธอด Getter ทั้ง 2 รายการนี้ช่วยให้คุณเรียกข้อมูลออบเจ็กต์บริการหรือประเภทใดก็ได้ใน
API ระบบจะใช้get_service
เพื่อเรียกข้อมูลไคลเอ็นต์บริการ get_type
ใช้สำหรับออบเจ็กต์อื่นๆ คลาสไคลเอ็นต์บริการมีการกำหนดไว้ในโค้ด
ภายใต้เส้นทางเวอร์ชัน google/ads/googleads/v*/services/services/
และมีการกำหนดประเภททั้งหมด
ภายใต้หมวดหมู่ออบเจ็กต์ต่างๆ
google/ads/googleads/v*/common|enums|errors|resources|services/types/
ระบบจะสร้างโค้ดทั้งหมดภายใต้ไดเรกทอรีเวอร์ชัน ดังนั้นแนวทางปฏิบัติแนะนำคือการใช้วิธีการเหล่านี้แทนการนำเข้าออบเจ็กต์โดยตรง ในกรณีที่โครงสร้างของโค้ดเบสมีการเปลี่ยนแปลง
ตัวอย่างวิธีใช้เมธอด get_service
เพื่อดึงข้อมูลอินสแตนซ์
ของไคลเอ็นต์ 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 v20 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v20")
googleads_service = client.get_service("GoogleAdsService")
ตัวอย่างวิธีใช้เมธอด get_type
เพื่อดึงอินสแตนซ์ Campaign
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v20")
campaign = client.get_type("Campaign")
Enum
แม้ว่าคุณจะใช้วิธี get_type
เพื่อดึงข้อมูล Enum ได้ แต่ละอินสแตนซ์ GoogleAdsClient
ก็มีแอตทริบิวต์ enums
ที่โหลด Enum แบบไดนามิกโดยใช้กลไกเดียวกับวิธี get_type
อินเทอร์เฟซนี้
ออกแบบมาให้เรียบง่ายและอ่านง่ายกว่าการใช้ get_type
client = GoogleAdsClient.load_from_storage(version=v20)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
ฟิลด์ออบเจ็กต์ Proto ที่เป็น Enum จะแสดงใน Python ด้วยประเภท enum ดั้งเดิม ซึ่งหมายความว่าคุณ
จะอ่านค่าของสมาชิกได้อย่างง่ายดาย การทำงานกับอินสแตนซ์ campaign
จากตัวอย่างก่อนหน้าใน Python REPL
>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3
บางครั้งการทราบชื่อของฟิลด์ที่สอดคล้องกับค่า enum ดังที่แสดงด้านบนก็มีประโยชน์ คุณเข้าถึงข้อมูลนี้ได้โดยใช้name
แอตทริบิวต์ต่อไปนี้
>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>
การโต้ตอบกับ Enum จะแตกต่างกันไปขึ้นอยู่กับว่าคุณได้ตั้งค่า
use_proto_plus
เป็น true
หรือ false
ดูรายละเอียดเกี่ยวกับอินเทอร์เฟซทั้ง 2 รายการได้ที่เอกสารประกอบเกี่ยวกับข้อความ Protobuf
การกำหนดเวอร์ชัน
เราจะดูแล API หลายเวอร์ชันพร้อมกัน แม้ว่า v20
จะเป็นเวอร์ชันล่าสุด แต่คุณจะยังเข้าถึงเวอร์ชันก่อนหน้าได้จนกว่าจะมีการเลิกใช้งาน ไลบรารีจะมีคลาส Proto
message แยกต่างหากซึ่งสอดคล้องกับ API แต่ละเวอร์ชันที่ใช้งานอยู่ หากต้องการเข้าถึงคลาสข้อความ
สำหรับเวอร์ชันที่เฉพาะเจาะจง ให้ระบุพารามิเตอร์คีย์เวิร์ด version
เมื่อ
เริ่มต้นไคลเอ็นต์เพื่อให้ระบบแสดงอินสแตนซ์จากเวอร์ชันที่ระบุ
นั้นเสมอ
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v20/")
# The Campaign instance will be from the v20 version of the API.
campaign = client.get_type("Campaign")
นอกจากนี้ คุณยังระบุเวอร์ชันเมื่อเรียกใช้เมธอด get_service
และ get_type
ได้ด้วย การดำเนินการนี้จะลบล้างเวอร์ชันที่ระบุเมื่อ
เริ่มต้นไคลเอ็นต์
client = GoogleAdsService.load_from_storage()
# This will load the v20 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v20")
client = GoogleAdsService.load_from_storage(version="v20")
# This will load the v18 version of a Campaign.
campaign = client.get_type("Campaign", version="v18")
หากไม่ได้ระบุพารามิเตอร์คีย์เวิร์ด version
ไลบรารีจะใช้เวอร์ชันล่าสุดเป็นค่าเริ่มต้น
ดูรายการเวอร์ชันล่าสุดและเวอร์ชันอื่นๆ ที่พร้อมใช้งานได้ในส่วนการนำทางด้านซ้ายของเอกสารประกอบเอกสารอ้างอิง API