ตัวรับบริการและประเภท

การดึงข้อมูลการอ้างอิงไปยังคลาสโปรโตทุกคลาสที่จำเป็นต่อการใช้ API ใน Python อาจเป็นข้อมูลที่แบบละเอียด และช่วยให้คุณมีความเข้าใจใน API นั้นๆ หรือมีบริบทบ่อยๆ เพื่ออ้างอิงโปรโตหรือเอกสารประกอบ

เมธอด get_service และ get_type ของลูกค้า

เมธอด Getter ทั้งสองวิธีนี้ช่วยให้คุณเรียกข้อมูลบริการหรือออบเจ็กต์ประเภทใน 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 v17 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v17")
googleads_service = client.get_service("GoogleAdsService")

ต่อไปนี้คือตัวอย่างวิธีใช้เมธอด get_type เพื่อเรียกข้อมูลอินสแตนซ์ Campaign

from google.ads.googleads.client import GoogleAdsClient

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

Enum

แม้ว่าคุณจะใช้เมธอด get_type เพื่อเรียกข้อมูล Enum ได้ แต่อินสแตนซ์ GoogleAdsClient แต่ละรายการยังมีแอตทริบิวต์ enums ที่โหลด Enum แบบไดนามิกโดยใช้กลไกเดียวกับเมธอด get_type อินเทอร์เฟซนี้มีจุดประสงค์เพื่อให้อ่านง่ายขึ้นกว่าการใช้ get_type

client = GoogleAdsClient.load_from_storage(version=v17)

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

ช่องออบเจ็กต์ Proto ที่เป็น enum จะแสดงใน Python ด้วยประเภท enum แบบเนทีฟ ซึ่งหมายความว่าคุณจะอ่าน คุณค่าของสมาชิกได้อย่างง่ายดาย การทำงานกับอินสแตนซ์ campaign จากตัวอย่างก่อนหน้าในการจำลอง Python

>>> 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 แบบที่เอกสารประกอบเกี่ยวกับข้อความ Protocolbuf

การกำหนดเวอร์ชัน

มีการบำรุงรักษา API หลายเวอร์ชันในเวลาเดียวกัน แม้ว่า v17 อาจเป็นเวอร์ชันล่าสุด แต่เวอร์ชันก่อนหน้าจะยังเข้าถึงได้จนกว่าจะหยุดให้บริการ ไลบรารีจะมีคลาสข้อความโปรโตที่แยกกันที่สอดคล้องกับเวอร์ชัน API ที่ใช้งานอยู่แต่ละเวอร์ชัน หากต้องการเข้าถึงคลาสข้อความสำหรับเวอร์ชันที่เจาะจง ให้ระบุพารามิเตอร์คีย์เวิร์ด version เมื่อเริ่มต้นไคลเอ็นต์เพื่อให้แสดงผลอินสแตนซ์จากเวอร์ชันที่ระบุเสมอ

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")

นอกจากนี้ คุณยังระบุเวอร์ชันเมื่อเรียกใช้เมธอด get_service และ get_type ได้ด้วย การทำเช่นนี้จะลบล้างเวอร์ชันที่ระบุเมื่อเริ่มต้นไคลเอ็นต์

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")

หากไม่ได้ระบุพารามิเตอร์คีย์เวิร์ด version ไลบรารีจะใช้เวอร์ชันล่าสุดตามค่าเริ่มต้น ดูรายการเวอร์ชันล่าสุดและเวอร์ชันอื่นๆ ที่พร้อมใช้งานได้ที่ส่วนการนำทางด้านซ้ายมือของเอกสารประกอบเอกสารอ้างอิง API