การดึงข้อมูลอ้างอิงไปยังคลาส Proto ต่างๆ ทั้งหมดที่จำเป็นต่อการใช้ API ใน Python อาจมีรายละเอียดมากเกินไป และคุณต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับ API หรือต้องสลับบริบทบ่อยๆ เพื่ออ้างอิง Proto หรือเอกสารประกอบ
เมธอด get_service และ get_type ของไคลเอ็นต์
เมธอด Getter ทั้ง 2 รายการนี้ช่วยให้คุณดึงข้อมูลออบเจ็กต์บริการหรือออบเจ็กต์ประเภทใดก็ได้ใน API ระบบจะใช้เมธอด get_service เพื่อดึงข้อมูลไคลเอ็นต์บริการ get_type จะใช้กับออบเจ็กต์อื่นๆ คลาสไคลเอ็นต์บริการจะกำหนดไว้ในโค้ดภายใต้เส้นทางเวอร์ชัน google/ads/googleads/v*/services/ และประเภททั้งหมดจะกำหนดไว้ภายใต้หมวดหมู่ออบเจ็กต์ต่างๆ google/ads/googleads/v*/common|enums|errors|resources|services/types/ ระบบจะสร้างโค้ดทั้งหมดภายใต้ไดเรกทอรีเวอร์ชัน ดังนั้นแนวทางปฏิบัติแนะนำคือให้ใช้วิธีการเหล่านี้แทนการนำเข้าออบเจ็กต์โดยตรง ในกรณีที่โครงสร้างของฐานของโค้ดมีการเปลี่ยนแปลง
ตัวอย่างต่อไปนี้แสดงวิธีใช้เมธอด get_service เพื่อดึงข้อมูลอินสแตนซ์ของไคลเอ็นต์ GoogleAdsService (หรือ GoogleAdsServiceAsyncClient แบบอะซิงโครนัสใน google-ads v28.4.0 และเวอร์ชันใหม่กว่าโดยการส่ง is_async=True)
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 v26 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v26")
googleads_service = client.get_service("GoogleAdsService")
# Supported in google-ads v28.4.0 and later: retrieve an async service client.
googleads_async_service = client.get_service("GoogleAdsService", is_async=True)
ตัวอย่างต่อไปนี้แสดงวิธีใช้เมธอด get_type เพื่อดึงข้อมูลอินสแตนซ์ Campaign
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
Enum
แม้ว่าคุณจะใช้เมธอด get_type เพื่อดึงข้อมูล Enum ได้ แต่อินสแตนซ์ GoogleAdsClient แต่ละรายการก็มีแอตทริบิวต์ enums ที่โหลด Enum แบบไดนามิกโดยใช้กลไกเดียวกับเมธอด get_type ด้วย อินเทอร์เฟซนี้เรียบง่ายและอ่านง่ายกว่าการใช้ get_type:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
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 หลายเวอร์ชันพร้อมกัน แม้ว่า v26 จะเป็นเวอร์ชันล่าสุด แต่คุณจะยังเข้าถึงเวอร์ชันก่อนหน้าได้จนกว่าจะหยุดให้บริการ ไลบรารีประกอบด้วยคลาสข้อความ Proto แยกต่างหากที่สอดคล้องกับ API เวอร์ชันที่ใช้งานอยู่แต่ละเวอร์ชัน หากต้องการเข้าถึงคลาสข้อความสำหรับเวอร์ชันที่เฉพาะเจาะจง ให้ระบุพารามิเตอร์คีย์เวิร์ด version เมื่อเริ่มต้นไคลเอ็นต์เพื่อให้แสดงผลอินสแตนซ์จากเวอร์ชันที่ระบุเสมอ
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
# The Campaign instance will be from the v26 version of the API.
campaign = client.get_type("Campaign")
หากไม่ได้ระบุ version เมื่อเริ่มต้นไคลเอ็นต์ คุณสามารถระบุเวอร์ชันต่อการเรียกใช้เมื่อเรียกใช้เมธอด get_service และ get_type (โปรดทราบว่าหากตั้งค่า version ไว้เมื่อเริ่มต้น GoogleAdsClient ระบบจะลบล้างอาร์กิวเมนต์ version ที่ส่งไปยัง get_service หรือ get_type)
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
# This loads the v26 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v26"
)
# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")
หากไม่มีการระบุพารามิเตอร์คีย์เวิร์ด version ไลบรารีจะใช้ค่าเริ่มต้นเป็นเวอร์ชัน API สูงสุดที่แพ็กเกจ google-ads ที่ติดตั้งไว้รองรับ ("v26" ในรุ่นล่าสุด) โปรดทราบว่าการเผยแพร่ API เวอร์ชันย่อย (เช่น v25.1) จะเข้าถึงได้โดยใช้สตริงเวอร์ชันหลัก (version="v25") รายการเวอร์ชันล่าสุดและเวอร์ชันอื่นๆ ที่พร้อมใช้งานซึ่งอัปเดตแล้วจะอยู่ในส่วนการนำทางด้านซ้ายของเอกสารประกอบข้อมูลอ้างอิง API