การแก้ปัญหา

วิดีโอ: ดูการพูดคุยเกี่ยวกับการจัดการข้อผิดพลาดจากเวิร์กช็อปปี 2019

ข้อผิดพลาดอาจเกิดจากการตั้งค่าสภาพแวดล้อมที่ไม่ถูกต้อง ข้อบกพร่องใน ซอฟต์แวร์ หรืออินพุตที่ไม่ถูกต้องจากผู้ใช้ ไม่ว่าแหล่งที่มาจะเป็นอะไร คุณจะต้องแก้ปัญหาและแก้ไขโค้ดหรือเพิ่มตรรกะเพื่อจัดการข้อผิดพลาดของผู้ใช้ คู่มือนี้จะกล่าวถึงแนวทางปฏิบัติแนะนำบางส่วนเมื่อแก้ปัญหา ข้อผิดพลาดจาก 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/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

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

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

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

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

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

  4. หากพบข้อผิดพลาดที่ไม่ได้บันทึกไว้ โปรดแจ้งให้เราทราบในฟอรัม

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

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

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

การหาสาเหตุ

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

การแก้ปัญหา

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

พิจารณาการแชร์

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

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

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

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