วิดีโอ: ดูการพูดคุยเกี่ยวกับการจัดการข้อผิดพลาดจากเวิร์กช็อปปี 2019
ข้อผิดพลาดอาจเกิดจากการตั้งค่าสภาพแวดล้อมที่ไม่ถูกต้อง ข้อบกพร่องใน ซอฟต์แวร์ หรืออินพุตที่ไม่ถูกต้องจากผู้ใช้ ไม่ว่าแหล่งที่มาจะเป็นอะไร คุณจะต้องแก้ปัญหาและแก้ไขโค้ดหรือเพิ่มตรรกะเพื่อจัดการข้อผิดพลาดของผู้ใช้ คู่มือนี้จะกล่าวถึงแนวทางปฏิบัติแนะนำบางส่วนเมื่อแก้ปัญหา ข้อผิดพลาดจาก Google Ads API
ตรวจสอบการเชื่อมต่อ
ตรวจสอบว่าคุณมีสิทธิ์เข้าถึง Google Ads API และตั้งค่าอย่างถูกต้อง หากการตอบกลับแสดงข้อผิดพลาด HTTP โปรดตรวจสอบข้อผิดพลาดเหล่านั้นอย่างละเอียดและตรวจสอบว่าคุณเข้าถึงบริการที่ต้องการใช้จากโค้ดได้
ระบบจะฝังข้อมูลเข้าสู่ระบบของคุณไว้ในคำขอเพื่อให้ บริการตรวจสอบสิทธิ์คุณ ทำความคุ้นเคยกับโครงสร้างของคำขอและการตอบกลับของ 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/matchtype'.",
"location": { "operationIndex": "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": {
"operationIndex": "0",
"fieldPathElements": [ { "fieldName": "keyword" } ]
}
}
]
}
เมื่อแก้ปัญหา อาจเป็นไปได้ว่าแอปพลิเคชันของคุณให้ข้อมูลที่ไม่ถูกต้องแก่ API เราขอแนะนำอย่างยิ่งให้ใช้สภาพแวดล้อมในการพัฒนาซอฟต์แวร์แบบอินเทอร์แอกทีฟ (IDE) เช่น Eclipse (IDE แบบโอเพนซอร์สและฟรีซึ่งส่วนใหญ่ใช้ในการพัฒนา Java แต่มีปลั๊กอินสำหรับภาษาอื่นๆ) เพื่อช่วยคุณในการแก้ไขข้อบกพร่อง ซึ่งช่วยให้คุณตั้งค่าเบรกพอยต์และทำทีละขั้นตอน ในโค้ดได้ทีละบรรทัด
ตรวจสอบอีกครั้งว่าคำขอตรงกับข้อมูลที่คุณป้อนในใบสมัคร (เช่น ชื่อแคมเปญอาจไม่ได้อยู่ในคำขอ) ตรวจสอบว่าคุณส่งมาสก์ฟิลด์ ที่ตรงกับการอัปเดตที่ต้องการทำ เนื่องจาก Google Ads API รองรับการอัปเดตแบบกระจาย การละเว้นฟิลด์จากมาสก์ฟิลด์ในคำขอเปลี่ยนแปลงจะบ่งบอกว่า API ควรปล่อยฟิลด์นั้นไว้ หากแอปพลิเคชันของคุณดึงข้อมูลออบเจ็กต์ ทำการเปลี่ยนแปลง และส่งกลับ คุณอาจเขียนไปยังฟิลด์ที่ไม่ รองรับการอัปเดต ดูคำอธิบายของช่องในเอกสารอ้างอิงเพื่อดูว่ามีข้อจำกัดเกี่ยวกับเวลาหรือเงื่อนไขในการอัปเดตช่องหรือไม่
วิธีรับความช่วยเหลือ
บางครั้งคุณอาจระบุและแก้ปัญหาด้วยตนเองไม่ได้ การถามในฟอรัมจะทำให้คำถามของคุณปรากฏต่อนักพัฒนาแอปหลายพันคนซึ่งอาจเคยพบปัญหาเดียวกัน
โปรดพยายามใส่ข้อมูลให้มากที่สุดเท่าที่จะทำได้ในคำค้นหา รายการที่แนะนำมีดังนี้
- คำขอและการตอบกลับ JSON ที่ผ่านการล้างข้อมูล โปรดนำข้อมูลที่ละเอียดอ่อน เช่น โทเค็นนักพัฒนาแอปหรือ AuthToken ออก
- ข้อมูลโค้ด หากพบปัญหาเกี่ยวกับภาษาหรือ ขอความช่วยเหลือในการใช้ API โปรดใส่ข้อมูลโค้ดเพื่อช่วย อธิบายสิ่งที่คุณกำลังทำ
- RequestId ซึ่งจะช่วยให้สมาชิกในทีม Google Developer Relations ค้นหาคำขอของคุณได้ หากส่งคำขอในสภาพแวดล้อมที่ใช้งานจริง เราขอแนะนำให้ลงทะเบียน requestId ในบันทึกเป็นพร็อพเพอร์ตี้ในข้อยกเว้นที่แคปซูลข้อผิดพลาดในการตอบกลับ รวมถึงบริบทเพิ่มเติมมากกว่า requestId เพียงอย่างเดียว
- ข้อมูลเพิ่มเติม เช่น เวอร์ชันรันไทม์/อินเทอร์พรีเตอร์และ แพลตฟอร์ม อาจเป็นประโยชน์เมื่อแก้ปัญหาด้วย
การแก้ปัญหา
ตอนนี้คุณทราบปัญหาและหาวิธีแก้ไขแล้ว ก็ถึงเวลา ทำการเปลี่ยนแปลงและทดสอบการแก้ไขกับบัญชีทดสอบ (แนะนำ) หรือ บัญชีจริง (หากข้อบกพร่องมีผลกับข้อมูลในบัญชีจริงที่เฉพาะเจาะจงเท่านั้น)
พิจารณาการแชร์
หากคุณโพสต์คำถามในฟอรัมเกี่ยวกับข้อผิดพลาดที่ยังไม่เคยมีในฟอรัมมาก่อนและพบวิธีแก้ปัญหาแล้ว โปรดพิจารณาเพิ่มวิธีแก้ปัญหาดังกล่าวลงในกระทู้ ครั้งต่อไปที่นักพัฒนาแอปพบปัญหาเดียวกันนี้ นักพัฒนาแอปจะแก้ปัญหาได้ทันที
ขั้นตอนถัดไป
ตอนนี้คุณแก้ปัญหานี้ได้แล้ว คุณสังเกตเห็นวิธีปรับปรุงโค้ดเพื่อหลีกเลี่ยงปัญหานี้ตั้งแต่แรกไหม
การสร้างชุดการทดสอบหน่วยที่ดีจะช่วยปรับปรุงคุณภาพและความน่าเชื่อถือของโค้ดได้อย่างมาก นอกจากนี้ยังช่วยเร่งกระบวนการทดสอบการเปลี่ยนแปลงใหม่ๆ เพื่อให้มั่นใจว่าการเปลี่ยนแปลงเหล่านั้นจะไม่ทำให้ฟังก์ชันการทำงานก่อนหน้าใช้งานไม่ได้ นอกจากนี้ กลยุทธ์การจัดการข้อผิดพลาดที่ดีก็เป็น กุญแจสำคัญในการแสดงข้อมูลที่จำเป็นทั้งหมดสำหรับการแก้ปัญหาด้วย