การแก้ปัญหา

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

ตรวจสอบว่าเชื่อมต่อได้

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

  2. ระบบจะฝังข้อมูลเข้าสู่ระบบไว้ในคำขอเพื่อให้ บริการตรวจสอบสิทธิ์คุณ ทำความคุ้นเคยกับ โครงสร้างของคำขอและการตอบกลับของ 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) เพื่อตั้งค่าเบรกพอยต์ เดินทีละบรรทัดในโค้ด และตรวจสอบเพย์โหลดคำขอที่สร้างขึ้นก่อนที่จะส่ง

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

วิธีรับความช่วยเหลือ

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

พยายามใส่ข้อมูลให้มากที่สุดเท่าที่จะทำได้ในคำค้นหา รายการที่แนะนำ ได้แก่

  • คำขอและการตอบกลับ JSON ที่ผ่านการล้างข้อมูล โปรดนำข้อมูลที่ละเอียดอ่อน เช่น โทเค็นเพื่อการเข้าถึง OAuth, โทเค็นการรีเฟรช, โทเค็นนักพัฒนาแอป (หากยังรวมอยู่ในส่วนหัวของคำขอดั้งเดิม) และรหัสลูกค้าออก
  • ข้อมูลโค้ด หากคุณมีปัญหาเกี่ยวกับภาษาที่เฉพาะเจาะจงหรือต้องการขอความช่วยเหลือในการทำงานกับ API โปรดใส่ข้อมูลโค้ดเพื่อช่วยอธิบายสิ่งที่คุณกำลังทำ
  • request-id ซึ่งจะช่วยให้สมาชิกในทีม Google Developer Relations ค้นหาคำขอของคุณได้หากส่งคำขอในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ เราขอแนะนำให้บันทึก request-id ที่รวมอยู่ในส่วนหัวของการตอบกลับหรือ ข้อยกเว้นที่ห่อหุ้มข้อผิดพลาดในการตอบกลับ รวมถึงบริบทมากกว่า เฉพาะ request-id
  • นอกจากนี้ ข้อมูลเพิ่มเติม เช่น เวอร์ชันรันไทม์หรือเวอร์ชันตัวแปลและแพลตฟอร์ม ก็อาจเป็นประโยชน์เมื่อแก้ปัญหาด้วย

แก้ไขปัญหา

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

ขั้นตอนถัดไป

ตอนนี้คุณแก้ปัญหานี้ได้แล้ว คุณสังเกตเห็นวิธีปรับปรุงโค้ดเพื่อหลีกเลี่ยงปัญหานี้ตั้งแต่แรกไหม

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