การแก้ปัญหา

วิดีโอ: ดูทอล์กเกี่ยวกับการจัดการข้อผิดพลาดจากเวิร์กช็อปปี 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. ไปที่ศูนย์ช่วยเหลือของ 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": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

เมื่อแก้ปัญหา คุณอาจพบว่าแอปพลิเคชันของคุณให้ข้อมูลที่ไม่ถูกต้องแก่ API เราขอแนะนำอย่างยิ่งให้ใช้ สภาพแวดล้อมในการพัฒนาซอฟต์แวร์แบบอินเทอร์แอกทีฟ (IDE) เช่น Eclipse (IDE แบบโอเพนซอร์สและฟรีซึ่งส่วนใหญ่ใช้ในการพัฒนา Java แต่มี ปลั๊กอินสำหรับภาษาอื่นๆ) เพื่อช่วยในการแก้ไขข้อบกพร่อง ซึ่งช่วยให้คุณตั้งค่า เบรกพอยต์และดูโค้ดทีละบรรทัดได้

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

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

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

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

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

แก้ไขปัญหา

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

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

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

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