แม้แต่นักพัฒนาซอฟต์แวร์ที่มีประสบการณ์มากที่สุดก็แทบจะไม่เขียนโค้ดอย่างถูกต้องในครั้งแรก การแก้ปัญหาจึงเป็นส่วนสำคัญของกระบวนการพัฒนา ในส่วนนี้เราจะกล่าวถึงเทคนิคบางอย่างที่จะช่วยคุณค้นหา ทําความเข้าใจ และแก้ไขข้อบกพร่องในสคริปต์
ข้อความแสดงข้อผิดพลาด
เมื่อสคริปต์พบข้อผิดพลาด ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น ข้อความจะแสดงพร้อมกับหมายเลขบรรทัดที่ใช้สำหรับการแก้ปัญหา ข้อผิดพลาดพื้นฐาน 2 ประเภทที่แสดงด้วยวิธีนี้ ได้แก่ ข้อผิดพลาดด้านไวยากรณ์และข้อผิดพลาดรันไทม์
ข้อผิดพลาดทางไวยากรณ์
ข้อผิดพลาดของไวยากรณ์เกิดจากเขียนโค้ดที่ไม่เป็นไปตามไวยากรณ์ JavaScript และระบบจะตรวจพบข้อผิดพลาดทันทีที่คุณพยายามบันทึกสคริปต์ ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้มีข้อผิดพลาดทางไวยากรณ์
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ";
MailApp.sendEmail('[email protected]',
'Data in row ' + rowNumber,
rowData);
}
ปัญหาทางไวยากรณ์ในที่นี้คืออักขระ )
ตัวที่ขาดหายไปในตอนท้ายของบรรทัดที่ 4 เมื่อพยายามบันทึกสคริปต์ คุณจะได้รับข้อผิดพลาดต่อไปนี้
ไม่มี ) หลังจากรายการอาร์กิวเมนต์ (บรรทัด 4)
ข้อผิดพลาดประเภทนี้มักจะแก้ปัญหาได้ง่าย เนื่องจากพบได้ทันทีและมักมีสาเหตุที่เข้าใจง่าย คุณจะบันทึกไฟล์ที่มีข้อผิดพลาดทางไวยากรณ์ไม่ได้ ซึ่งหมายความว่าระบบจะบันทึกเฉพาะโค้ดที่ถูกต้องลงในโปรเจ็กต์
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้เกิดจากการใช้ฟังก์ชันหรือคลาสอย่างไม่ถูกต้อง และระบบจะตรวจพบได้ก็ต่อเมื่อเรียกใช้สคริปต์แล้วเท่านั้น ตัวอย่างเช่น โค้ดต่อไปนี้ ทำให้เกิดข้อผิดพลาดรันไทม์
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ");
MailApp.sendEmail('john',
'Data in row ' + rowNumber,
rowData);
}
โค้ดมีรูปแบบที่ถูกต้อง แต่เราส่งค่า "john" สำหรับที่อยู่อีเมลเมื่อเรียกใช้ MailApp.sendEmail
เนื่องจากอีเมลนี้ไม่ถูกต้อง ระบบจะแสดงข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้สคริปต์
อีเมลไม่ถูกต้อง: john (บรรทัด 5)
สิ่งที่ทําให้ข้อผิดพลาดเหล่านี้แก้ปัญหาได้ยากขึ้นคือข้อมูลที่คุณส่งไปยังฟังก์ชันไม่ได้เขียนไว้ในโค้ด แต่ดึงมาจากสเปรดชีต แบบฟอร์ม หรือแหล่งข้อมูลภายนอกอื่นๆ การใช้เทคนิคการแก้ไขข้อบกพร่องด้านล่างจะช่วยคุณระบุสาเหตุของข้อผิดพลาดเหล่านี้ได้
ข้อผิดพลาดที่พบบ่อย
ด้านล่างนี้คือรายการข้อผิดพลาดที่พบบ่อยและสาเหตุ
มีการเรียกใช้บริการหลายครั้งเกินไป: <action name>
ข้อผิดพลาดนี้บ่งบอกว่าคุณใช้โควต้ารายวันสําหรับการดําเนินการหนึ่งๆ เกินโควต้าแล้ว เช่น คุณอาจพบข้อผิดพลาดนี้หากส่งอีเมลมากเกินไปใน 1 วัน โควต้าจะกำหนดในระดับที่แตกต่างกันสำหรับบัญชีผู้ใช้ทั่วไป โดเมน และพรีเมียร์ และอาจมีการเปลี่ยนแปลงได้ทุกเมื่อโดยที่ Google ไม่จำเป็นต้องประกาศให้ทราบล่วงหน้า คุณดูขีดจำกัดโควต้าสำหรับการดำเนินการต่างๆ ได้ในเอกสารประกอบเกี่ยวกับโควต้าของ Apps Script
เซิร์ฟเวอร์ไม่พร้อมใช้งานหรือเกิดข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ โปรดลองอีกครั้ง
ข้อผิดพลาดเหล่านี้อาจมีสาเหตุที่เป็นไปได้หลายประการ:
- เซิร์ฟเวอร์หรือระบบของ Google ไม่พร้อมใช้งานชั่วคราว โปรดรอสักครู่แล้วลองเรียกใช้สคริปต์อีกครั้ง
- เกิดข้อผิดพลาดในสคริปต์ที่ไม่มีข้อความแสดงข้อผิดพลาดที่เกี่ยวข้อง ลองแก้ไขข้อบกพร่องของสคริปต์และดูว่าแยกปัญหาได้หรือไม่
- มีข้อบกพร่องใน Google Apps Script ที่ทำให้เกิดข้อผิดพลาดนี้ ดูวิธีการค้นหาและส่งรายงานข้อบกพร่องได้ที่ข้อบกพร่อง ก่อนรายงานข้อบกพร่องใหม่ ให้ค้นหาเพื่อดูว่าผู้อื่นรายงานข้อบกพร่องนั้นไปแล้วหรือยัง
การดำเนินการนี้ต้องได้รับสิทธิ์
ข้อผิดพลาดนี้บ่งบอกว่าสคริปต์ขาดการให้สิทธิ์ที่จำเป็นสำหรับการเรียกใช้ เมื่อเรียกใช้สคริปต์ในเครื่องมือแก้ไขสคริปต์หรือจากรายการเมนูที่กำหนดเอง ระบบจะแสดงกล่องโต้ตอบการให้สิทธิ์แก่ผู้ใช้ อย่างไรก็ตาม เมื่อเรียกใช้สคริปต์จากทริกเกอร์ ฝังไว้ในหน้า Google Sites หรือเรียกใช้เป็นบริการ ระบบจะแสดงกล่องโต้ตอบไม่ได้และข้อผิดพลาดนี้จะแสดงขึ้น
หากต้องการให้สิทธิ์สคริปต์ ให้เปิดเครื่องมือแก้ไขสคริปต์แล้วเรียกใช้ฟังก์ชันใดก็ได้ ข้อความแจ้งการให้สิทธิ์จะปรากฏขึ้นเพื่อให้คุณให้สิทธิ์โปรเจ็กต์สคริปต์ได้ หากสคริปต์มีบริการใหม่ที่ไม่ได้รับอนุญาต คุณต้องให้สิทธิ์สคริปต์อีกครั้ง
ข้อผิดพลาดนี้มักเกิดจากการที่ทริกเกอร์เริ่มทํางานก่อนที่ผู้ใช้จะให้สิทธิ์ หากคุณไม่มีสิทธิ์เข้าถึงโปรเจ็กต์สคริปต์ (เนื่องจากเกิดข้อผิดพลาดกับส่วนเสริมที่คุณใช้) ปกติแล้วคุณจะให้สิทธิ์สคริปต์ได้โดยใช้ส่วนเสริมอีกครั้ง หากทริกเกอร์ยังคงทริกเกอร์และทำให้เกิดข้อผิดพลาดนี้ คุณสามารถนําทริกเกอร์ออกได้โดยทําดังนี้
- คลิกทริกเกอร์ ทางด้านซ้ายของโปรเจ็กต์ Apps Script
- ที่ด้านขวาของทริกเกอร์ที่ต้องการนำออก ให้คลิกเพิ่มเติม > ลบทริกเกอร์
นอกจากนี้ คุณยังนำทริกเกอร์ส่วนเสริมที่เป็นปัญหาออกได้โดยถอนการติดตั้งส่วนเสริม
Access denied: DriveApp หรือ The domain policy has disabled third-party Drive apps
ผู้ดูแลระบบ Google Workspace โดเมนสามารถปิดใช้ Drive API ในโดเมนของตน ซึ่งจะป้องกันไม่ให้ผู้ใช้ติดตั้งและใช้แอป Google ไดรฟ์ การตั้งค่านี้ยังป้องกันไม่ให้ผู้ใช้ใช้ส่วนเสริม Apps Script ที่ใช้บริการไดรฟ์หรือบริการไดรฟ์ขั้นสูง (แม้ว่าสคริปต์จะได้รับอนุญาตก่อนที่ผู้ดูแลระบบจะปิดใช้ Drive API ก็ตาม)
อย่างไรก็ตาม หากมีการเผยแพร่ส่วนเสริมหรือเว็บแอปที่ใช้บริการไดรฟ์สำหรับการติดตั้งทั่วทั้งโดเมน และผู้ดูแลระบบติดตั้งให้กับผู้ใช้บางรายหรือทั้งหมดในโดเมน สคริปต์จะทำงานให้กับผู้ใช้เหล่านั้นแม้ว่าจะปิดใช้ Drive API ในโดเมนก็ตาม
สคริปต์ไม่มีสิทธิ์รับข้อมูลระบุตัวตนของผู้ใช้ที่ใช้งานอยู่
บ่งบอกว่าสคริปต์ไม่พร้อมใช้งานสำหรับข้อมูลประจำตัวและอีเมลของผู้ใช้ที่ใช้งานอยู่ คําเตือนนี้เป็นผลมาจากการเรียกใช้ Session.getActiveUser()
นอกจากนี้ยังอาจเกิดจากการเรียกใช้ Session.getEffectiveUser()
หากสคริปต์ทํางานในโหมดการให้สิทธิ์อื่นที่ไม่ใช่ AuthMode.FULL
หากได้รับคำเตือนนี้ การเรียกไปยัง User.getEmail()
ในภายหลังจะส่งคืนเฉพาะ "" เท่านั้น
การแก้ปัญหาคําเตือนนี้ทำได้หลายวิธี โดยขึ้นอยู่กับโหมดการให้สิทธิ์ที่สคริปต์ทํางานอยู่ โหมดการให้สิทธิ์จะปรากฏในฟังก์ชันที่ทริกเกอร์เป็นพร็อพเพอร์ตี้ authMode
ของe
พารามิเตอร์เหตุการณ์
- ใน
AuthMode.FULL
ให้พิจารณาใช้Session.getEffectiveUser()
แทน - ใน
AuthMode.LIMITED
ให้ตรวจสอบว่าเจ้าของได้ให้สิทธิ์สคริปต์แล้ว - ในโหมดการให้สิทธิ์อื่นๆ ให้หลีกเลี่ยงการเรียกใช้วิธีการใดวิธีการหนึ่ง
- หากคุณเป็น Google Workspace ลูกค้าที่ได้รับคำเตือนนี้เป็นครั้งแรกจากทริกเกอร์ที่ติดตั้งได้ ให้ตรวจสอบว่าทริกเกอร์ทำงานในฐานะผู้ใช้ภายในองค์กรของคุณ
ไม่มีคลัง
หากคุณเพิ่มไลบรารียอดนิยมลงในสคริปต์ คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่ระบุว่าไลบรารีขาดหายไป แม้ว่าไลบรารีจะแสดงอยู่ในรายการทรัพยากรที่จำเป็นของสคริปต์ก็ตาม สาเหตุอาจเกิดจากการที่มีคนเข้าถึงห้องสมุดพร้อมกันมากเกินไป หากต้องการหลีกเลี่ยงข้อผิดพลาดนี้ ให้ลองใช้วิธีแก้ปัญหาอย่างใดอย่างหนึ่งต่อไปนี้
- คัดลอกและวางโค้ดของไลบรารีลงในสคริปต์ แล้วนําข้อกําหนดของไลบรารีออก
- คัดลอกสคริปต์คลังแล้วติดตั้งใช้งานเป็นสคริปต์คลังจากบัญชี อย่าลืมอัปเดต Dependency ในสคริปต์ต้นฉบับเป็นไลบรารีใหม่แทนไลบรารีสาธารณะ
เกิดข้อผิดพลาดเนื่องจากไม่มีเวอร์ชันไลบรารีหรือเวอร์ชันการทำให้ใช้งานได้ รหัสข้อผิดพลาด Not_Found
ข้อความแสดงข้อผิดพลาดนี้บ่งบอกถึงสิ่งใดสิ่งหนึ่งต่อไปนี้
- สคริปต์เวอร์ชันที่ทำให้ใช้งานได้ถูกลบไปแล้ว หากต้องการอัปเดตสคริปต์เวอร์ชันที่ทำให้ใช้งานได้ โปรดดูแก้ไขการทำให้เวอร์ชันใช้งานได้
- ลบเวอร์ชันของไลบรารีที่สคริปต์ใช้แล้ว หากต้องการตรวจสอบว่าคลังใดหายไป ให้คลิก> เปิดในแท็บใหม่ ไลบรารีที่ขาดหายไปจะแสดงข้อความแสดงข้อผิดพลาด หลังจากพบคลังที่ต้องการอัปเดตแล้ว ให้ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- อัปเดตคลังให้ใช้เวอร์ชันอื่น โปรดดูอัปเดตไลบรารี
- นำไลบรารีที่ลบแล้วออกจากโปรเจ็กต์สคริปต์และโค้ด โปรดดูหัวข้อนำคลังออก
เพิ่มเติมข้างชื่อคลัง - สคริปต์ของไลบรารีที่สคริปต์ใช้มีไลบรารีอื่นที่ใช้เวอร์ชันที่ถูกลบ ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- หากคุณมีสิทธิ์แก้ไขไลบรารีที่สคริปต์ใช้ ให้อัปเดตไลบรารีรองในสคริปต์นั้นเป็นเวอร์ชันที่มีอยู่
- อัปเดตคลังให้ใช้เวอร์ชันอื่น ดูหัวข้ออัปเดตคลัง
- นําไลบรารีออกจากโปรเจ็กต์สคริปต์และโค้ด โปรดดูหัวข้อนำคลังออก
ข้อผิดพลาด 400: invalid_scope เมื่อเรียกใช้ Google Chat API กับบริการขั้นสูง
หากเห็น Error 400: invalid_scope
พร้อมข้อความแสดงข้อผิดพลาด Some requested scopes cannot be shown
หมายความว่าคุณไม่ได้ระบุขอบเขตการให้สิทธิ์ในไฟล์ appsscript.json
ของโปรเจ็กต์ Apps Script ในกรณีส่วนใหญ่ Apps Script จะกำหนดขอบเขตที่ต้องใช้สคริปต์โดยอัตโนมัติ แต่เมื่อคุณใช้บริการขั้นสูงของ Chat คุณต้องเพิ่มขอบเขตการให้สิทธิ์ที่สคริปต์ใช้ลงในไฟล์ Manifest ของโปรเจ็กต์ Apps Script ด้วยตนเอง ดู
การตั้งค่าขอบเขตที่ชัดเจน
หากต้องการแก้ไขข้อผิดพลาด ให้เพิ่มขอบเขตการให้สิทธิ์ที่เหมาะสมลงในไฟล์ appsscript.json
ของโปรเจ็กต์ Apps Script โดยเป็นส่วนหนึ่งของอาร์เรย์ oauthScopes
เช่น หากต้องการเรียกใช้วิธี spaces.messages.create
ให้เพิ่มบรรทัดต่อไปนี้
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
ผู้ดูแลระบบไม่อนุญาตให้ UrlFetch ทำการเรียกไปยัง <URL>
ผู้ดูแลระบบ Google Workspace สามารถเปิดใช้รายการที่อนุญาตในคอนโซลผู้ดูแลระบบเพื่อควบคุมโดเมนภายนอกที่คุณเข้าถึงได้ผ่าน Apps Script
หากต้องการแก้ไขข้อผิดพลาด โปรดติดต่อผู้ดูแลระบบเพื่อขอให้เพิ่ม URL ลงในรายการที่อนุญาต
การแก้ไขข้อบกพร่อง
ข้อผิดพลาดบางรายการอาจไม่แสดงข้อความแสดงข้อผิดพลาด อาจมีข้อผิดพลาดที่ละเอียดกว่าซึ่งโค้ดถูกต้องในทางเทคนิคและสามารถทํางานได้ แต่ผลลัพธ์กลับไม่เป็นอย่างที่คาดไว้ ต่อไปนี้คือกลยุทธ์บางส่วนในการจัดการสถานการณ์ดังกล่าวและตรวจสอบสคริปต์ที่ไม่ได้ทํางานตามที่คาดไว้เพิ่มเติม
การบันทึก
ขณะแก้ไขข้อบกพร่อง บ่อยครั้งที่การบันทึกข้อมูลขณะที่โปรเจ็กต์สคริปต์ทำงานจะมีประโยชน์ Google Apps Script มี 2 วิธีในการบันทึกข้อมูล ได้แก่ บริการบันทึกข้อมูลระบบคลาวด์ และบริการบันทึกและคอนโซลพื้นฐานมากกว่า ซึ่งติดตั้งไว้ในเครื่องมือแก้ไข Apps Script
ดูรายละเอียดเพิ่มเติมได้ที่คู่มือการบันทึก
Error Reporting
ระบบจะบันทึกข้อยกเว้นที่เกิดขึ้นเนื่องจากข้อผิดพลาดรันไทม์โดยอัตโนมัติโดยใช้บริการการรายงานข้อผิดพลาดของ Google Cloud บริการนี้ช่วยให้คุณค้นหาและกรองข้อความข้อยกเว้นที่โปรเจ็กต์สคริปต์สร้างขึ้นได้
หากต้องการเข้าถึงการรายงานข้อผิดพลาด โปรดดูดูบันทึกในระบบคลาวด์และรายงานข้อผิดพลาดในคอนโซล Google Cloud Platform
การดำเนินการ
ทุกครั้งที่คุณเรียกใช้สคริปต์ Apps Script จะบันทึกการดำเนินการ รวมถึงบันทึกของ Cloud ด้วย ระเบียนเหล่านี้จะช่วยให้คุณเข้าใจการดำเนินการที่สคริปต์ดำเนินการ
หากต้องการดูการดำเนินการของสคริปต์ในโปรเจ็กต์ Apps Script ให้คลิกการดำเนินการ
ทางด้านซ้ายกำลังตรวจสอบสถานะบริการ Apps Script
แม้ว่าจะไม่ค่อยเกิดขึ้น แต่บางครั้งบริการบางอย่างของ Google Workspace (เช่น Gmail หรือไดรฟ์) อาจพบปัญหาชั่วคราวที่อาจส่งผลให้บริการหยุดชะงัก เมื่อเกิดปัญหานี้ขึ้น โปรเจ็กต์ Apps Script ที่โต้ตอบกับบริการเหล่านี้อาจไม่ทำงานตามที่คาดไว้
คุณสามารถตรวจสอบว่าบริการ Google Workspace หยุดทำงานหรือไม่ได้โดยดูที่แดชบอร์ดสถานะของ Google Workspace หากกำลังเกิดปัญหาการหยุดทำงาน โปรดรอให้ปัญหาได้รับการแก้ไขหรือขอความช่วยเหลือเพิ่มเติมในศูนย์ช่วยเหลือของ Google Workspace หรือเอกสารประกอบปัญหาที่ทราบเกี่ยวกับ Google Workspace
ใช้โปรแกรมแก้ไขข้อบกพร่องและเบรกพอยต์
หากต้องการค้นหาปัญหาในสคริปต์ ให้เรียกใช้สคริปต์ในโหมดแก้ไขข้อบกพร่อง เมื่อเรียกใช้โหมดแก้ไขข้อบกพร่อง สคริปต์จะหยุดชั่วคราวเมื่อถึงจุดหยุดพัก ซึ่งก็คือบรรทัดที่ไฮไลต์ในสคริปต์ที่คุณคิดว่าอาจมีปัญหา เมื่อสคริปต์หยุดชั่วคราว ระบบจะแสดงค่าของตัวแปรแต่ละรายการ ณ เวลานั้น ซึ่งช่วยให้คุณตรวจสอบการทํางานภายในของสคริปต์ได้โดยไม่ต้องเพิ่มคำสั่งการบันทึกจำนวนมาก
เพิ่มเบรกพอยท์
หากต้องการเพิ่มเบรกพอยท์ ให้วางเมาส์เหนือหมายเลขบรรทัดของเส้นที่ต้องการเพิ่มเบรกพอยท์ คลิกวงกลมทางด้านซ้ายของหมายเลขบรรทัด รูปภาพด้านล่างแสดงตัวอย่างจุดหยุดพักที่เพิ่มลงในสคริปต์
เรียกใช้สคริปต์ในโหมดแก้ไขข้อบกพร่อง
หากต้องการเรียกใช้สคริปต์ในโหมดแก้ไขข้อบกพร่อง ให้คลิกแก้ไขข้อบกพร่องที่ด้านบนของเครื่องมือแก้ไข
ก่อนที่สคริปต์จะเรียกใช้บรรทัดที่มีจุดหยุดพักชั่วคราว ระบบจะหยุดชั่วคราวและแสดงตารางข้อมูลการแก้ไขข้อบกพร่อง คุณสามารถใช้ตารางนี้เพื่อตรวจสอบข้อมูล เช่น ค่าของพารามิเตอร์และข้อมูลที่จัดเก็บไว้ในออบเจ็กต์
หากต้องการควบคุมวิธีเรียกใช้สคริปต์ ให้ใช้ปุ่ม "Step in" "Step over" และ "Step out" ที่ด้านบนของแผงโปรแกรมแก้ไขข้อบกพร่อง ซึ่งจะช่วยให้คุณเรียกใช้สคริปต์ทีละบรรทัดและตรวจสอบว่าค่ามีการเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป
ปัญหาเกี่ยวกับบัญชี Google หลายบัญชี
หากเข้าสู่ระบบบัญชี Google หลายบัญชีพร้อมกัน คุณอาจพบปัญหาในการเข้าถึงส่วนเสริมและเว็บแอป ระบบไม่รองรับการเข้าสู่ระบบหรือการดึงเข้าสู่ระบบหลายบัญชี Google หลายบัญชีพร้อมกันสําหรับ Apps Script, ส่วนเสริม หรือเว็บแอป
หากคุณเปิดเครื่องมือแก้ไข Apps Script ขณะลงชื่อเข้าใช้มากกว่า 1 บัญชี Google จะแจ้งให้เลือกบัญชีที่ต้องการดำเนินการต่อ
หากเปิดเว็บแอปหรือส่วนเสริมและพบปัญหาเกี่ยวกับการเข้าสู่ระบบหลายบัญชี ให้ลองใช้วิธีแก้ปัญหาวิธีใดวิธีหนึ่งต่อไปนี้
- ออกจากระบบบัญชี Google ทั้งหมด แล้วเข้าสู่ระบบบัญชีที่มีส่วนเสริมหรือเว็บแอปที่ต้องการเข้าถึงเท่านั้น
- เปิดหน้าต่างที่ไม่ระบุตัวตนใน Google Chrome หรือหน้าต่างการท่องเว็บแบบส่วนตัวที่เทียบเท่า และเข้าสู่ระบบบัญชี Google ที่มีส่วนเสริมหรือเว็บแอปที่คุณต้องการเข้าถึง
การขอความช่วยเหลือ
การแก้ไขข้อบกพร่องโดยใช้เครื่องมือและเทคนิคที่ระบุไว้ข้างต้นจะช่วยแก้ปัญหาได้หลายอย่าง แต่คุณอาจพบปัญหาที่ต้องใช้ความช่วยเหลือเพิ่มเติมในการแก้ปัญหา โปรดดูข้อมูลเกี่ยวกับตําแหน่งที่คุณสามารถถามคําถามและรายงานข้อบกพร่องได้ที่หน้าการสนับสนุน