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

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

เมธอด 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 v18 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v18")
googleads_service = client.get_service("GoogleAdsService")

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

from google.ads.googleads.client import GoogleAdsClient

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

Enum

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

client = GoogleAdsClient.load_from_storage(version=v18)

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

ช่องออบเจ็กต์ Proto ที่เป็น Enum จะแสดงใน Python ด้วยประเภท enum ดั้งเดิม ซึ่งหมายความว่าคุณอ่านมูลค่าของสมาชิกได้ง่ายๆ การทำงานกับอินสแตนซ์ campaign จากตัวอย่างก่อนหน้าใน repl ของ 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 รายการได้ที่เอกสารประกอบเกี่ยวกับข้อความ protobuf

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

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

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

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

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

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

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