การแก้ปัญหา

ข้อผิดพลาดอาจเกิดจากการตั้งค่าสภาพแวดล้อมที่ไม่ถูกต้อง ข้อบกพร่องในซอฟต์แวร์ หรืออินพุตที่ไม่ถูกต้องจากผู้ใช้ ไม่ว่าแหล่งที่มาจะเป็นอะไร คุณจะต้องแก้ปัญหาและแก้ไขโค้ดหรือเพิ่มตรรกะเพื่อจัดการข้อผิดพลาดของผู้ใช้ คู่มือนี้จะพูดถึงแนวทางปฏิบัติแนะนำบางประการเมื่อแก้ปัญหาข้อผิดพลาดจาก Google Ads API

ตรวจสอบการเชื่อมต่อ

  1. ตรวจสอบว่าคุณมีสิทธิ์เข้าถึง Google Ads API และตั้งค่าอย่างถูกต้อง หากการตอบกลับแสดงข้อผิดพลาดของ HTTP โปรดตรวจสอบว่าคุณได้แก้ไขข้อผิดพลาดเหล่านั้นอย่างรอบคอบ และคุณเข้าถึงบริการที่ต้องการใช้จากโค้ดของคุณ

  2. ข้อมูลเข้าสู่ระบบจะฝังอยู่ในคำขอเพื่อให้ระบบตรวจสอบสิทธิ์ของคุณได้ ทำความคุ้นเคยกับโครงสร้างของคำขอ API และการตอบกลับของ Google Ads API โดยเฉพาะอย่างยิ่งหากคุณจะจัดการการเรียกใช้โดยไม่ใช้ไลบรารีของไคลเอ็นต์ ไลบรารีของไคลเอ็นต์แต่ละรายการจะมาพร้อมกับวิธีการเฉพาะเกี่ยวกับวิธีรวมข้อมูลเข้าสู่ระบบไว้ในไฟล์การกำหนดค่า (ดู README ของไลบรารีของไคลเอ็นต์)

  3. ตรวจสอบว่าคุณใช้ข้อมูลเข้าสู่ระบบที่ถูกต้อง คู่มือเริ่มใช้งานฉบับย่อจะแนะนำขั้นตอนการรับชุดข้อมูลที่ถูกต้องที่คุณต้องการ ตัวอย่างเช่น การตอบกลับที่ล้มเหลวต่อไปนี้แสดงให้เห็นว่าผู้ใช้ส่งข้อมูลรับรองการตรวจสอบสิทธิ์ที่ไม่ถูกต้อง

    {
      "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 }
        ]
      }
    }
  ]
}

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

ค้นคว้าเกี่ยวกับข้อผิดพลาด

  1. โปรดดูเอกสารประกอบเกี่ยวกับข้อผิดพลาดที่พบบ่อย ซึ่งครอบคลุมข้อผิดพลาดที่พบมากที่สุด โดยจะอธิบายข้อความแสดงข้อผิดพลาด เอกสารอ้างอิง API ที่เกี่ยวข้อง และวิธีหลีกเลี่ยงหรือจัดการข้อผิดพลาด

  2. หากเอกสารประกอบเกี่ยวกับข้อผิดพลาดที่พบบ่อยไม่ได้ระบุข้อผิดพลาดนั้นไว้โดยเฉพาะ โปรดดูเอกสารอ้างอิงและมองหาสตริงข้อผิดพลาด

  3. ค้นหาช่องทางการสนับสนุนของเราเพื่อเข้าถึงนักพัฒนาแอปรายอื่นๆ ที่แชร์ประสบการณ์การใช้งาน API อาจมีคนอื่นที่เคยพบและแก้ไขปัญหาที่คุณกำลังประสบอยู่

  4. ไปที่ศูนย์ช่วยเหลือของ Google Ads เพื่อรับความช่วยเหลือในการแก้ปัญหาเกี่ยวกับการตรวจสอบหรือขีดจำกัดบัญชี เนื่องจาก Google Ads API จะรับกฎและข้อจำกัดของผลิตภัณฑ์ Google Ads หลักมาใช้

  5. บล็อกโพสต์จะเป็นข้อมูลอ้างอิงที่ดีในบางครั้งเมื่อแก้ปัญหาเกี่ยวกับแอปพลิเคชัน

  6. หากพบข้อผิดพลาดที่ไม่ได้ระบุไว้ โปรดติดต่อทีมสนับสนุน

หลังจากค้นคว้าเกี่ยวกับข้อผิดพลาดแล้ว ก็ถึงเวลาหาสาเหตุของปัญหา

ค้นหาสาเหตุ

ตรวจสอบข้อความแสดงข้อยกเว้นเพื่อหาสาเหตุของข้อผิดพลาด หลังจากดูการตอบกลับแล้ว ให้ตรวจสอบคำขอเพื่อหาสาเหตุที่เป็นไปได้ ข้อความแสดงข้อผิดพลาดบางข้อความของ 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 ที่ดีจะช่วยปรับปรุงคุณภาพและความน่าเชื่อถือของโค้ดได้อย่างมาก นอกจากนี้ยังช่วยเร่งกระบวนการทดสอบการเปลี่ยนแปลงใหม่ๆ เพื่อให้มั่นใจว่าการเปลี่ยนแปลงเหล่านั้นจะไม่ทำให้ฟังก์ชันการทำงานก่อนหน้านี้เสียหาย กลยุทธ์การจัดการข้อผิดพลาดที่ดีก็เป็นกุญแจสำคัญในการแสดงข้อมูลที่จำเป็นทั้งหมดสำหรับการแก้ปัญหาเช่นกัน