ข้อผิดพลาดอาจเกิดจากการตั้งค่าสภาพแวดล้อมที่ไม่ถูกต้อง ข้อบกพร่องในซอฟต์แวร์ หรืออินพุตที่ไม่ถูกต้องจากผู้ใช้ ไม่ว่าแหล่งที่มาจะเป็นอะไร คุณจะต้องแก้ปัญหาและแก้ไขโค้ดหรือเพิ่มตรรกะเพื่อจัดการข้อผิดพลาดของผู้ใช้ คู่มือนี้จะพูดถึงแนวทางปฏิบัติแนะนำบางประการเมื่อแก้ปัญหาข้อผิดพลาดจาก Google Ads API
ตรวจสอบการเชื่อมต่อ
ตรวจสอบว่าคุณมีสิทธิ์เข้าถึง Google Ads API และตั้งค่าอย่างถูกต้อง หากการตอบกลับแสดงข้อผิดพลาดของ HTTP โปรดตรวจสอบว่าคุณได้แก้ไขข้อผิดพลาดเหล่านั้นอย่างรอบคอบ และคุณเข้าถึงบริการที่ต้องการใช้จากโค้ดของคุณ
ข้อมูลเข้าสู่ระบบจะฝังอยู่ในคำขอเพื่อให้ระบบตรวจสอบสิทธิ์ของคุณได้ ทำความคุ้นเคยกับโครงสร้างของคำขอ API และการตอบกลับของ Google Ads API โดยเฉพาะอย่างยิ่งหากคุณจะจัดการการเรียกใช้โดยไม่ใช้ไลบรารีของไคลเอ็นต์ ไลบรารีของไคลเอ็นต์แต่ละรายการจะมาพร้อมกับวิธีการเฉพาะเกี่ยวกับวิธีรวมข้อมูลเข้าสู่ระบบไว้ในไฟล์การกำหนดค่า (ดู README ของไลบรารีของไคลเอ็นต์)
ตรวจสอบว่าคุณใช้ข้อมูลเข้าสู่ระบบที่ถูกต้อง คู่มือเริ่มใช้งานฉบับย่อจะแนะนำขั้นตอนการรับชุดข้อมูลที่ถูกต้องที่คุณต้องการ ตัวอย่างเช่น การตอบกลับที่ล้มเหลวต่อไปนี้แสดงให้เห็นว่าผู้ใช้ส่งข้อมูลรับรองการตรวจสอบสิทธิ์ที่ไม่ถูกต้อง
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
หากทำตามขั้นตอนเหล่านี้แล้วแต่ยังพบปัญหาอยู่ ก็ถึงเวลาเจาะลึกการแก้ปัญหาข้อผิดพลาดของ Google Ads API แล้ว
ระบุปัญหา
โดยทั่วไป Google Ads API จะรายงานข้อผิดพลาดเป็นออบเจ็กต์ความล้มเหลว JSON ซึ่งมีรายการข้อผิดพลาดในการตอบกลับ ออบเจ็กต์เหล่านี้จะแสดงรหัสข้อผิดพลาดและข้อความที่อธิบายสาเหตุที่เกิดข้อผิดพลาด ซึ่งเป็นสัญญาณแรกที่บ่งบอกว่าปัญหาอาจเกิดจากอะไร
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword.match_type'.",
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 1 }
]
}
}
]
}
ไลบรารีของไคลเอ็นต์ทั้งหมดของเราจะแสดงข้อยกเว้นที่รวมข้อผิดพลาดในการตอบกลับ การบันทึกข้อยกเว้นเหล่านี้และพิมพ์ข้อความในบันทึกหรือหน้าจอการแก้ปัญหาเป็นจุดเริ่มต้นที่ดี การผสานรวมข้อมูลนี้กับเหตุการณ์อื่นๆ ที่บันทึกไว้ในแอปพลิเคชันจะช่วยให้เห็นภาพรวมที่ดีว่าอะไรอาจเป็นสาเหตุของปัญหา เมื่อระบุข้อผิดพลาดในบันทึกได้แล้ว คุณจะต้องค้นหาความหมายของข้อผิดพลาดนั้น
ค้นคว้าเกี่ยวกับข้อผิดพลาด
โปรดดูเอกสารประกอบเกี่ยวกับข้อผิดพลาดที่พบบ่อย ซึ่งครอบคลุมข้อผิดพลาดที่พบมากที่สุด โดยจะอธิบายข้อความแสดงข้อผิดพลาด เอกสารอ้างอิง API ที่เกี่ยวข้อง และวิธีหลีกเลี่ยงหรือจัดการข้อผิดพลาด
หากเอกสารประกอบเกี่ยวกับข้อผิดพลาดที่พบบ่อยไม่ได้ระบุข้อผิดพลาดนั้นไว้โดยเฉพาะ โปรดดูเอกสารอ้างอิงและมองหาสตริงข้อผิดพลาด
ค้นหาช่องทางการสนับสนุนของเราเพื่อเข้าถึงนักพัฒนาแอปรายอื่นๆ ที่แชร์ประสบการณ์การใช้งาน API อาจมีคนอื่นที่เคยพบและแก้ไขปัญหาที่คุณกำลังประสบอยู่
ไปที่ศูนย์ช่วยเหลือของ Google Ads เพื่อรับความช่วยเหลือในการแก้ปัญหาเกี่ยวกับการตรวจสอบหรือขีดจำกัดบัญชี เนื่องจาก Google Ads API จะรับกฎและข้อจำกัดของผลิตภัณฑ์ Google Ads หลักมาใช้
บล็อกโพสต์จะเป็นข้อมูลอ้างอิงที่ดีในบางครั้งเมื่อแก้ปัญหาเกี่ยวกับแอปพลิเคชัน
หากพบข้อผิดพลาดที่ไม่ได้ระบุไว้ โปรดติดต่อทีมสนับสนุน
หลังจากค้นคว้าเกี่ยวกับข้อผิดพลาดแล้ว ก็ถึงเวลาหาสาเหตุของปัญหา
ค้นหาสาเหตุ
ตรวจสอบข้อความแสดงข้อยกเว้นเพื่อหาสาเหตุของข้อผิดพลาด หลังจากดูการตอบกลับแล้ว ให้ตรวจสอบคำขอเพื่อหาสาเหตุที่เป็นไปได้ ข้อความแสดงข้อผิดพลาดบางข้อความของ Google Ads API มี fieldPathElements ในช่อง location ของ GoogleAdsError ซึ่งระบุตำแหน่งในคำขอที่เกิดข้อผิดพลาด เช่น
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 0 },
{ "fieldName": "create" },
{ "fieldName": "keyword" }
]
}
}
]
}
เมื่อแก้ปัญหา คุณอาจพบว่าแอปพลิเคชันให้ข้อมูลที่ไม่ถูกต้องแก่ API เราขอแนะนำอย่างยิ่งให้ใช้โปรแกรมแก้ไขข้อบกพร่องของสภาพแวดล้อมในการพัฒนาซอฟต์แวร์แบบผสานรวม (IDE) เพื่อตั้งค่าเบรกพอยต์ ตรวจสอบโค้ดทีละบรรทัด และตรวจสอบเพย์โหลดคำขอที่สร้างขึ้นก่อนที่จะส่ง
ตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าคำขอตรงกับข้อมูลที่ป้อนในแอปพลิเคชัน (เช่น ชื่อแคมเปญอาจไม่ปรากฏในคำขอ) ตรวจสอบว่าคุณส่ง field mask ที่ตรงกับการอัปเดตที่ต้องการทำ เนื่องจาก Google Ads API รองรับการอัปเดตแบบ Sparse การละเว้นช่องจากมาสก์ช่องในคำขอเปลี่ยนแปลงข้อมูลในเซิร์ฟเวอร์หมายความว่า API ควรปล่อยช่องนั้นไว้ตามเดิม หากแอปพลิเคชันของคุณดึงข้อมูลออบเจ็กต์ ทำการเปลี่ยนแปลง และส่งกลับมา คุณอาจกำลังเขียนไปยังช่องที่ไม่รองรับการอัปเดต ตรวจสอบคำอธิบายของช่องในเอกสารอ้างอิงเพื่อดูว่ามีข้อจำกัดเกี่ยวกับเวลาหรือการอัปเดตช่องหรือไม่
วิธีรับความช่วยเหลือ
คุณอาจระบุและแก้ไขปัญหาด้วยตนเองไม่ได้เสมอไป คุณสามารถติดต่อทีมสนับสนุนเพื่อขอความช่วยเหลือได้
พยายามใส่ข้อมูลให้มากที่สุดเท่าที่จะทำได้ในการค้นหา รายการที่แนะนำมีดังนี้
- คำขอและการตอบกลับ JSON ที่ผ่านการตรวจสอบแล้ว อย่าลืมนำข้อมูลที่ละเอียดอ่อนออก เช่น โทเค็นเพื่อการเข้าถึง OAuth, โทเค็นการรีเฟรช และรหัสลูกค้า
- ข้อมูลโค้ด หากคุณพบปัญหาเฉพาะภาษาหรือกำลังขอความช่วยเหลือในการทำงานกับ API ให้ใส่ข้อมูลโค้ดเพื่อช่วยอธิบายสิ่งที่คุณกำลังทำ
request-idซึ่งจะช่วยให้สมาชิกทีม Google Developer Relations ค้นหาคำขอของคุณได้หากส่งคำขอในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ เราขอแนะนำให้บันทึกrequest-idที่รวมอยู่ในส่วนหัวการตอบกลับหรือข้อยกเว้นที่รวมข้อผิดพลาดในการตอบกลับ รวมถึงบริบทอื่นๆ นอกเหนือจากrequest-idเพียงอย่างเดียว- ข้อมูลเพิ่มเติม เช่น รันไทม์หรือเวอร์ชันอินเทอร์พรีเตอร์และแพลตฟอร์ม อาจเป็นประโยชน์เมื่อแก้ปัญหาด้วย
แก้ไขปัญหา
เมื่อคุณทราบปัญหาและพบวิธีแก้ไขแล้ว ก็ถึงเวลาทำการเปลี่ยนแปลงและทดสอบการแก้ไขกับบัญชีทดสอบ (แนะนำ) หรือเวอร์ชันที่ใช้งานจริง (หากข้อบกพร่องมีผลกับข้อมูลในบัญชีเวอร์ชันที่ใช้งานจริงที่เฉพาะเจาะจงเท่านั้น)
ขั้นตอนถัดไป
เมื่อแก้ปัญหานี้ได้แล้ว คุณสังเกตเห็นวิธีปรับปรุงโค้ดเพื่อหลีกเลี่ยงปัญหานี้ตั้งแต่แรกไหม
การสร้างชุด Unit Test ที่ดีจะช่วยปรับปรุงคุณภาพและความน่าเชื่อถือของโค้ดได้อย่างมาก นอกจากนี้ยังช่วยเร่งกระบวนการทดสอบการเปลี่ยนแปลงใหม่ๆ เพื่อให้มั่นใจว่าการเปลี่ยนแปลงเหล่านั้นจะไม่ทำให้ฟังก์ชันการทำงานก่อนหน้านี้เสียหาย กลยุทธ์การจัดการข้อผิดพลาดที่ดีก็เป็นกุญแจสำคัญในการแสดงข้อมูลที่จำเป็นทั้งหมดสำหรับการแก้ปัญหาเช่นกัน