การแก้ปัญหา

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

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

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

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

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

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

แก้ไขปัญหา

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

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

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

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