ลดภาระครูด้วย AI: สร้างแบบทดสอบ Google Forms ด้วย ChatGPT และ Apps Script พร้อมเฉลย–ตรวจคะแนนอัตโนมัติ

ลดภาระครูด้วย AI: สร้างแบบทดสอบ Google Forms ด้วย ChatGPT และ Apps Script พร้อมเฉลย–ตรวจคะแนนอัตโนมัติ

จากการพิมพ์คำถามและตัวเลือกทีละข้อ ครูสามารถใช้ ChatGPT ช่วยร่างข้อสอบ แล้วใช้ Google Apps Script สร้างแบบทดสอบใน Google Forms พร้อมกำหนดคำตอบและคะแนนได้ แต่ขั้นตอนที่สำคัญยังอยู่ที่การตรวจเนื้อหา ตั้งค่าสิทธิ์ และทดลองทำก่อนส่งให้นักเรียน

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

เครื่องมือ AI และระบบอัตโนมัติสามารถช่วยลดขั้นตอนที่ต้องทำซ้ำได้ โดยเฉพาะการใช้ ChatGPT ร่วมกับ Google Forms และ Google Apps Script เพื่อเปลี่ยนข้อสอบที่เตรียมไว้ให้เป็นแบบทดสอบออนไลน์

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

บทความนี้พาเริ่มต้นตั้งแต่การออกแบบคำสั่งให้ AI ไปจนถึงตัวอย่างโค้ดที่นำไปทดลองได้ โดย ไม่ต้องเชื่อม OpenAI API

เข้าใจก่อน: ทั้ง 3 เครื่องมือทำหน้าที่ต่างกันอย่างไร

เครื่องมือ หน้าที่ในกระบวนการนี้
ChatGPT ช่วยร่างคำถาม ตัวเลือก เฉลย คำอธิบาย และโค้ดตามเงื่อนไขที่ครูกำหนด
Google Forms แสดงแบบทดสอบ รับคำตอบ และตรวจให้คะแนนคำถามที่รองรับเมื่อกำหนดเฉลยไว้
Google Apps Script รันคำสั่งเพื่อสร้างแบบฟอร์ม เพิ่มคำถาม กำหนดตัวเลือก เฉลย และคะแนน

Google Apps Script เป็นแพลตฟอร์มพัฒนาระบบอัตโนมัติที่ใช้ภาษา JavaScript ทำงานร่วมกับบริการของ Google โดยบริการ Forms ของ Apps Script รองรับการสร้างและแก้ไขแบบฟอร์ม รวมถึงการสร้างคำถามแบบเลือกตอบ.

วิธีในบทความนี้เป็นการนำเนื้อหาและโค้ดจาก ChatGPT ไปใช้ใน Apps Script ด้วยตนเอง ไม่ใช่การให้ ChatGPT เชื่อมต่อบัญชี Google โดยอัตโนมัติ และโค้ดตัวอย่างไม่ได้ส่งคำตอบของนักเรียนกลับไปยัง ChatGPT

เริ่มจากเป้าหมายการเรียนรู้ ก่อนสั่ง AI สร้างข้อสอบ

คำสั่งอย่าง “ช่วยสร้างข้อสอบคณิตศาสตร์ 50 ข้อ” อาจได้คำถามจำนวนมาก แต่ยังไม่ชัดว่าต้องการวัดอะไร เหมาะกับผู้เรียนระดับใด หรือมีความยากเพียงใด

ก่อนเริ่ม ครูควรกำหนดอย่างน้อย 5 เรื่อง ได้แก่

  1. ระดับชั้นและพื้นฐานผู้เรียน
  2. เนื้อหาและขอบเขตที่สอนแล้ว
  3. ผลการเรียนรู้ที่ต้องการวัด
  4. จำนวนข้อ รูปแบบ และระดับความยาก
  5. รูปแบบผลลัพธ์ที่ต้องการจาก AI

แนวทางของ OpenAI แนะนำให้ระบุเป้าหมาย บริบท ข้อจำกัด และรูปแบบคำตอบให้ชัดเจน พร้อมทบทวนผลลัพธ์และใช้คำสั่งต่อเนื่องเพื่อปรับงานให้ตรงความต้องการ.

ตัวอย่าง Prompt สำหรับร่างข้อสอบ

ช่วยร่างข้อสอบคณิตศาสตร์ระดับ ม.1 เรื่องจำนวนเต็มและลำดับการคำนวณ จำนวน 10 ข้อ

เป้าหมาย: ตรวจความเข้าใจเรื่องการบวกจำนวนเต็ม การคูณจำนวนเต็ม และการคูณก่อนบวก

เงื่อนไข:

  • เป็นข้อสอบปรนัย 4 ตัวเลือก มีคำตอบถูกเพียงข้อเดียว
  • ระดับพื้นฐาน 6 ข้อ และประยุกต์ 4 ข้อ
  • ใช้ภาษาเหมาะกับนักเรียน ม.1
  • ตัวลวงสะท้อนความเข้าใจผิดที่พบบ่อย
  • หลีกเลี่ยงคำถามกำกวมและตัวเลือกที่มีค่าเท่ากัน

แสดงผลเป็นตาราง: ข้อ / จุดประสงค์ / คำถาม / ตัวเลือก ก–ง / เฉลย / คำอธิบาย
ยังไม่ต้องเขียนโค้ด เพื่อให้ครูตรวจเนื้อหาก่อน

ควรแยก “ตรวจข้อสอบ” ออกจาก “สร้างโค้ด” เพราะครูจะมองเห็นข้อผิดพลาดของเนื้อหาได้ง่ายกว่าการตรวจคำถามที่ปะปนอยู่ในโค้ดยาว ๆ

เมื่อข้อสอบผ่านการตรวจแล้ว จึงสั่งให้ ChatGPT แปลงชุดที่ยืนยันแล้วเป็นโค้ด โดยกำชับไม่ให้เปลี่ยนข้อความ ตัวเลือก หรือเฉลย

ตรวจข้อสอบอย่างไร ก่อนนำไปสร้างฟอร์ม

AI อาจสร้างโจทย์ผิด เฉลยคลาดเคลื่อน หรือมีคำตอบถูกมากกว่าหนึ่งตัวเลือก ครูจึงควรตรวจทุกข้อ โดยพิจารณาทั้งเนื้อหาและคุณภาพการวัดผล

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

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

ตัวอย่างโค้ด: สร้างแบบทดสอบคณิตศาสตร์ 3 ข้อ

โค้ดด้านล่างสร้างแบบทดสอบแบบเลือกตอบ 4 ตัวเลือก ข้อละ 1 คะแนน พร้อมเฉลยและคำอธิบาย โดยสร้างเป็น แบบร่างที่ยังไม่เผยแพร่ เพื่อให้ครูตรวจสอบก่อน

function createMathQuiz() {
  const questions = [
    {
      title: "(-7) + 12 มีค่าเท่าใด",
      choices: ["-19", "-5", "5", "19"],
      answer: 2,
      explanation: "เริ่มจาก -7 แล้วเพิ่ม 12 จึงได้ 5"
    },
    {
      title: "(-4) × 6 มีค่าเท่าใด",
      choices: ["-24", "-10", "10", "24"],
      answer: 0,
      explanation:
        "จำนวนลบคูณจำนวนบวกได้จำนวนลบ: 4 × 6 = 24 จึงได้ -24"
    },
    {
      title: "8 + 3 × 2 มีค่าเท่าใด",
      choices: ["14", "16", "22", "24"],
      answer: 0,
      explanation:
        "คูณก่อนบวก: 3 × 2 = 6 แล้ว 8 + 6 = 14"
    }
  ];

  // ตรวจโครงสร้างข้อมูลก่อนสร้างฟอร์ม
  questions.forEach((q, i) => {
    if (
      !q.title ||
      q.choices.length !== 4 ||
      new Set(q.choices).size !== 4 ||
      !Number.isInteger(q.answer) ||
      q.answer < 0 ||
      q.answer >= 4
    ) {
      throw new Error("ตรวจข้อมูลข้อที่ " + (i + 1));
    }
  });

  const form = FormApp.create(
    "แบบฝึกคณิตศาสตร์ ม.1",
    false
  );

  form.setIsQuiz(true);
  form.setCollectEmail(false);
  form.setPublishingSummary(false);
  form.setDescription(
    "แบบฝึกจำนวนเต็มและลำดับการคำนวณ ข้อละ 1 คะแนน"
  );

  questions.forEach((q, i) => {
    const item = form.addMultipleChoiceItem();

    item.setTitle((i + 1) + ". " + q.title);
    item.setChoices(
      q.choices.map((text, index) =>
        item.createChoice(text, index === q.answer)
      )
    );
    item.setPoints(1);
    item.setRequired(true);

    const feedback = FormApp.createFeedback()
      .setText(q.explanation)
      .build();

    item.setFeedbackForCorrect(feedback);
    item.setFeedbackForIncorrect(feedback);
  });

  Logger.log(
    "ลิงก์แก้ไขสำหรับครู: " + form.getEditUrl()
  );
  Logger.log(
    "ลิงก์ตอบ ใช้หลังเผยแพร่: " + form.getPublishedUrl()
  );
}

คำสั่งสำคัญ ได้แก่ setIsQuiz(true) สำหรับเปิดโหมดแบบทดสอบ createChoice(text, isCorrect) สำหรับกำหนดคำตอบที่ถูก และ setPoints() สำหรับกำหนดคะแนน ส่วน FormApp.create(..., false) ใช้สร้างฟอร์มที่ยังไม่เผยแพร่.

วิธีแก้ไขข้อมูล

  • title คือข้อความคำถาม
  • choices คือตัวเลือกทั้ง 4 ข้อ
  • answer คือตำแหน่งคำตอบที่ถูก โดย เริ่มนับจาก 0 ดังนั้น 0 หมายถึงตัวเลือกแรก และ 3 หมายถึงตัวเลือกที่สี่
  • explanation คือคำอธิบายคำตอบ

ตัวตรวจในโค้ดช่วยตรวจจำนวนตัวเลือก ตัวเลือกข้อความซ้ำ และตำแหน่งเฉลย แต่ ไม่ได้ตรวจความถูกต้องทางคณิตศาสตร์หรือคุณภาพของข้อสอบแทนครู

วิธีนำโค้ดไปรันใน Google Apps Script

1. เข้าสู่ระบบด้วยบัญชีที่ต้องการใช้

เปิด Google Apps Script แล้วตรวจสอบว่าเข้าสู่ระบบด้วยบัญชีที่ต้องการเก็บแบบทดสอบ โดยเฉพาะผู้ที่ใช้หลายบัญชีในเครื่องเดียวกัน

หากใช้บัญชีโรงเรียน ควรตรวจว่านโยบายของสถานศึกษาอนุญาตให้ใช้งาน Apps Script และ Google Forms หรือไม่

2. สร้างโปรเจกต์ใหม่และวางโค้ด

เลือก โปรเจกต์ใหม่ หรือ New project ตั้งชื่อให้ค้นหาง่าย เช่น “แบบทดสอบคณิตศาสตร์ ม.1”

ในไฟล์โค้ดเริ่มต้น ให้แทนที่ฟังก์ชันตัวอย่างด้วยโค้ดด้านบน โดยไม่คัดลอกเครื่องหมาย “` ที่ใช้ครอบโค้ดในบทความ

3. บันทึกและเลือกฟังก์ชัน

บันทึกโปรเจกต์ เลือกฟังก์ชัน createMathQuiz จากรายการฟังก์ชัน แล้วกด เรียกใช้ หรือ Run

การสร้างฟอร์มด้วยวิธีนี้ ไม่ต้อง Deploy เป็นเว็บแอป

4. อ่านสิทธิ์ที่ระบบร้องขอก่อนอนุญาต

ในการรันครั้งแรก Apps Script จะขอสิทธิ์เข้าถึงบริการที่โค้ดใช้งาน ครูควรตรวจบัญชี ชื่อโปรเจกต์ และรายการสิทธิ์ให้ตรงกับงานที่ต้องการทำ

โค้ดตัวอย่างนี้ใช้บริการ Google Forms ไม่ได้เรียกส่งอีเมลหรือส่งข้อมูลไปเว็บไซต์ภายนอก หากเพิ่มโค้ดส่วนอื่นในภายหลัง สิทธิ์ที่ร้องขออาจเปลี่ยนไปด้วย

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

5. เปิดลิงก์จากบันทึกการทำงาน

เมื่อทำงานสำเร็จ ให้ดู บันทึกการดำเนินการ หรือ Execution log ซึ่งจะแสดงลิงก์สองประเภท

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

ทุกครั้งที่รันฟังก์ชันนี้จะสร้างฟอร์มใหม่ หากต้องการแก้ฟอร์มเดิม สามารถเปิดลิงก์แก้ไขและปรับใน Google Forms ได้โดยตรง

ก่อนส่งให้นักเรียน ต้องตรวจอีก 5 เรื่อง

1. เฉลยและคะแนนตรงกับที่ตั้งใจหรือไม่

เปิดตรวจทุกข้อในหน้าแก้ไข โดยเฉพาะหลังเปลี่ยนลำดับตัวเลือก เพราะหากแก้ตัวเลือกในโค้ดแต่ไม่แก้ค่า answer เฉลยอาจชี้ผิดตำแหน่ง

สำหรับตัวอย่างนี้ คะแนนเต็มควรเป็น 3 คะแนน

2. จะประกาศคะแนนทันที หรือหลังครูตรวจ

Google Forms ให้เลือกประกาศคะแนนทันทีหลังส่งคำตอบ หรือภายหลังเมื่อครูตรวจแล้ว รวมถึงกำหนดสิ่งที่ผู้ตอบมองเห็น เช่น คำตอบที่ถูกและคะแนนรายข้อ

แบบฝึกทบทวนอาจเหมาะกับการแสดงผลทันที แต่การสอบที่นักเรียนทำต่างเวลากันควรพิจารณาการเปิดเผยเฉลยอย่างรอบคอบ โดยตรวจเมนู การตั้งค่า → ประกาศคะแนน ก่อนใช้งาน.

3. ใครบ้างมีสิทธิ์ตอบ

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

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

4. ต้องระบุตัวผู้เรียนหรือไม่

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

ควรเก็บเฉพาะข้อมูลที่จำเป็น และตั้งสิทธิ์การเข้าถึงผลตอบให้เหมาะสม

5. ทดลองด้วยบัญชีหรือสิทธิ์แบบเดียวกับนักเรียน

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

ควรทดลองบนโทรศัพท์ด้วย หากเป็นอุปกรณ์หลักที่นักเรียนใช้ เพื่อดูความยาวข้อความและความสะดวกในการอ่าน

จาก “ตรวจคะแนน” ไปสู่ “เข้าใจผู้เรียน”

ประโยชน์ของแบบทดสอบออนไลน์ไม่ได้จบที่การรวมคะแนน ครูสามารถนำข้อมูลกลับมาปรับการสอนได้ เช่น

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

Google Forms สามารถสรุปผลตอบและคะแนนให้ครูตรวจสอบได้ ส่วนการเชื่อมคำตอบไปยัง Google Sheets สามารถตั้งค่าจากแท็บการตอบกลับของฟอร์ม.

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

งานใดต่อยอดเป็นระบบอัตโนมัติได้อีก

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

สำหรับงานที่ต้องทำเมื่อมีผู้ส่งคำตอบ หรือทำตามเวลา Apps Script มี Installable triggers รองรับ แต่ต้องเขียนคำสั่งและตั้งค่าทริกเกอร์เพิ่มเติม ไม่ได้เกิดขึ้นจากโค้ดสร้างฟอร์มตัวอย่างนี้

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

เริ่มต้นได้โดยไม่ใช้ API แต่ยังมีข้อจำกัดที่ต้องรู้

กระบวนการคัดลอกเนื้อหาจาก ChatGPT ไปสร้างฟอร์มด้วย Apps Script ไม่ต้องใช้ OpenAI API Key และไม่มีการเรียก OpenAI API ในโค้ดตัวอย่าง

อย่างไรก็ดี การใช้งานแต่ละบริการขึ้นอยู่กับบัญชี แผนบริการ และนโยบายองค์กร จึงไม่ควรเหมารวมว่าทุกฟีเจอร์ใช้งานฟรีได้ไม่จำกัด

Google Apps Script มีโควตาและข้อจำกัดการทำงาน เมื่อใช้งานเกินอาจเกิดข้อผิดพลาดและหยุดทำงาน โดยข้อจำกัดบางรายการแตกต่างกันตามประเภทบัญชี และ Google อาจเปลี่ยนแปลงได้.

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

ใช้ AI ลดงานซ้ำ เพื่อเพิ่มเวลากับงานที่ต้องใช้ความเข้าใจของครู

คุณค่าของการใช้ AI ในงานสอนอยู่ที่การเลือกใช้ให้เหมาะกับแต่ละขั้นตอน ChatGPT ช่วยร่าง Apps Script ช่วยสร้างฟอร์ม และ Google Forms ช่วยรับคำตอบกับตรวจคะแนนบางรูปแบบ ขณะที่ครูยังเป็นผู้กำหนดเป้าหมาย ตรวจคุณภาพ และตีความสิ่งที่ผลตอบสะท้อนออกมา

จุดเริ่มต้นที่ทำได้จริงอาจเป็นแบบทดสอบเพียง 3 ข้อ ทดลองจนเข้าใจกระบวนการ แล้วค่อยขยายไปสู่บทเรียนหรือห้องเรียนอื่น

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


แหล่งข้อมูลทางการ

ตรวจสอบข้อมูลวันที่ 15 ตุลาคม 2569 โค้ดตัวอย่างผ่านการตรวจตรรกะด้วยบริการจำลอง ยังไม่ได้ทดสอบการรันกับบัญชี Google จริง ผู้ใช้ควรทดลองสร้างฟอร์มและตรวจการตั้งค่าก่อนนำไปใช้กับนักเรียน

Leave a Reply

Your email address will not be published. Required fields are marked *