การแก้ปัญหา

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

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

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

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

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

แก้ไขปัญหา

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

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

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

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