/**
* ═══════════════════════════════════════════════════════════════════════════
* ระบบประกาศผลสอบรายบุคคล · Private Exam Results
* ระบบที่ 62/100 — กลุ่มโรงเรียน, มหาวิทยาลัย & สถาบันกวดวิชา
* ───────────────────────────────────────────────────────────────────────────
* ปัญหาที่แก้ : "ติดประกาศคะแนนเรียงลำดับหน้าห้อง — ทุกคนเห็นคะแนนของทุกคน ·
* ส่งไฟล์ Excel ที่มีคะแนนทั้งห้องลงไลน์กลุ่ม ·
* เด็กเอาคะแนนไปล้อกัน · เด็กที่ได้น้อยอับอายจนไม่อยากมาโรงเรียน ·
* ครูไม่รู้ว่าข้อไหนสอนแล้วเด็กไม่เข้าใจ"
*
* ⭐ จุดเด่นที่ 1 = **เห็นเฉพาะของตัวเอง — บังคับที่ระดับเซิร์ฟเวอร์**
* ไม่ใช่ซ่อนด้วยหน้าเว็บ · API ไม่เคยส่งคะแนนของคนอื่นกลับไปเลย
*
* ⭐ จุดเด่นที่ 2 = **ไม่มีระบบจัดอันดับ (ranking) โดยตั้งใจ**
สั่งซื้อด้านขวาเพื่อรับโค้ดเต็ม
ได้ไฟล์โปรเจกต์ .zip ทันทีหลังชำระเงิน
ข้อควรรู้ก่อนใช้
ติดตั้งยังไง (ประมาณ 10 นาที)
- 1 แตกไฟล์ ZIP จะได้ Code.gs · index.html · appsscript.json และคู่มือ README.md
- 2 เปิด script.google.com → New project → Project Settings ติ๊ก Show "appsscript.json"
- 3 วางเนื้อหา appsscript.json และ Code.gs แล้วกด + → HTML ตั้งชื่อ index วาง index.html
- 4 เลือกฟังก์ชัน setup → กด Run → อนุญาตสิทธิ์ ระบบจะสร้าง Google Sheet ให้เอง
- 5 Deploy → New deployment → Web app แล้วเปิดลิงก์ที่ได้ใช้งานได้เลย
📘 ขั้นตอนละเอียด การตั้งค่า (เช่น LINE Token ใน Script Properties) โครงสร้างชีต และคำถามที่พบบ่อย อยู่ในไฟล์ README.md ที่แนบใน ZIP — เปิดด้วย Notepad หรือ VS Code ได้เลย
⚠️ ตอนกด Run ครั้งแรก Google จะขึ้นเตือนว่า “แอปนี้ยังไม่ได้รับการยืนยัน” เป็นเรื่องปกติของสคริปต์ที่เราเขียนเอง กด Advanced → Go to (ชื่อโปรเจกต์) เพื่อไปต่อ · สคริปต์ทำงานในบัญชี Google ของคุณเอง เราไม่เห็นไฟล์ของคุณ
ติดตั้งไม่เป็น? ให้เราติดตั้งให้
฿590 / ระบบ
- ติดตั้งในบัญชี Google ของคุณ พร้อมสร้างชีตฐานข้อมูลให้
- ตั้งค่าที่จำเป็นให้ (เช่น LINE Token · อีเมลแจ้งเตือน) แล้วสอนใช้ผ่านแชท
- ได้ลิงก์ใช้งานจริงกลับไป ไม่ต้องแตะโค้ดเลย
เกี่ยวกับเครื่องมือนี้
ทำไมระบบนี้ถึงต้องมี ### ติดประกาศคะแนนเรียงลำดับหน้าห้อง = การเปิดเผยข้อมูลส่วนบุคคลของเด็ก ส่งไฟล์ Excel ที่มีคะแนนทุกคนลงไลน์กลุ่ม ก็เช่นกัน สิ่งที่เกิดขึ้นจริงคือ เด็กที่อยู่ท้ายตารางถูกล้อ อับอาย และบางคนเลิกอยากมาโรงเรียน — โดยที่การประกาศแบบนั้นไม่ได้ทำให้ใครเรียนดีขึ้นเลย • ทุกคนเห็นคะแนนของทุกคน — เห็นเฉพาะของตัวเอง — บังคับที่ระดับเซิร์ฟเวอร์ • เด็กเอาคะแนนไปล้อกัน — ไม่มีอันดับ ไม่มีคะแนนของคนอื่น • ครูไม่รู้ว่าสอนเรื่องไหนแล้วเด็กไม่เข้าใจ — วิเคราะห์รายหัวข้อ เรียงจากที่ทั้งห้องทำได้ต่ำสุด • เด็กสงสัยคะแนนแต่ไม่กล้าเดินไปถาม — ขอตรวจสอบในระบบ พร้อมเหตุผล ครูตอบเป็นลายลักษณ์อักษร • ครูกรอกคะแนนผิดโดยไม่รู้ตัว — ระบบตรวจว่ารายหัวข้อรวมตรงกับคะแนนรวมไหม 4 อย่างที่ทำให้ระบบนี้ต่างจากไฟล์ Excel 1️⃣ เห็นเฉพาะของตัวเอง — บังคับที่เซิร์ฟเวอร์ ไม่ใช่ซ่อนบนหน้าเว็บ /** * ⚠️ ไม่ส่งคะแนนของคนอื่นกลับไปเลย * ส่งเฉพาะ "สถิติรวม" ที่ระบุตัวบุคคลไม่ได้ */ function api_myResults(sid, token) { ... } ลิงก์ของแต่ละคนคำนวณจาก SHA-256 + salt — เดาไม่ได้ และนักเรียนที่มีอีเมลสามารถขอลิงก์ของตัวเองได้ โดยระบบส่งไปที่อีเมลที่ลงทะเบียนไว้เท่านั้น หน้าขอลิงก์ไม่บอกว่ารหัสนักเรียนนั้นมีอยู่จริงหรือไม่ — กันการเดารหัสไล่ไปเรื่อย ๆ 2️⃣ ไม่มีระบบจัดอันดับ — เป็นการตัดสินใจ ไม่ใช่ความบกพร่อง อันดับคือการเปรียบเทียบตัวบุคคล ซึ่งไม่ได้ทำให้ใครเรียนดีขึ้น สิ่งที่ระบบให้แทน: • ค่าเฉลี่ยของห้อง — ❌ อันดับที่เท่าไร • ค่ากลาง (มัธยฐาน) — ❌ คะแนนของคนอื่น • "อยู่ในกลุ่ม 25% บนของห้อง" (ควอไทล์) — ❌ ชื่อคนที่ได้คะแนนสูง/ต่ำ • ผลรายหัวข้อของตัวเอง และแสดงเฉพาะเมื่อมีคนสอบ ≥ 5 คน — ห้องเล็กกว่านั้นจะเดาตัวบุคคลได้ if (vals.length < 5 || myScore === null) return null; // ห้องเล็กเกินไป = เดาตัวคนได้ ครูปิดการแสดงค่าเฉลี่ยรายการสอบได้ — แต่ตอนปิด ระบบเตือนว่า "นักเรียนจะไม่รู้ว่าข้อสอบยากหรือง่าย และอาจคิดว่าคะแนนต่ำเป็นความผิดของตัวเองคนเดียว" 3️⃣ 📚 วิเคราะห์รายหัวข้อ — ส่วนที่มีค่าที่สุดสำหรับครู ตอนสร้างการสอบ ครูใส่หัวข้อย่อยแบบ จำนวนและพีชคณิต:20|เรขาคณิต:15|สถิติ:15 ระบบตรวจว่ารวมแล้วเท่ากับคะแนนเต็ม และล็อกไม่ให้แก้หลังกรอกคะแนนแล้ว (ไม่งั้นคะแนนเดิมจะถูกตีความผิดทั้งหมด) จากนั้นระบบเรียงหัวข้อจากที่ทั้งห้องทำได้ต่ำที่สุด พร้อมข้อความ: หัวข้อที่ทั้งห้องทำได้ต่ำ = สอนยังไม่เข้าใจ ไม่ใช่เด็กไม่เก่ง ใช้ตัวเลขนี้วางแผนสอนซ่อมเสริม — มีประโยชน์กว่าดูคะแนนรวมมาก และเมื่อค่าเฉลี่ยห้องต่ำกว่าครึ่ง ระบบเตือนตอนบันทึกทันที: ค่าเฉลี่ยต่ำแบบนี้มักแปลว่า ข้อสอบยากเกินไป หรือสอนไม่ทัน มากกว่าจะแปลว่าเด็กห้องนี้ไม่ตั้งใจ 4️⃣ 🙋 ขอตรวจสอบคะแนนได้ในระบบ การขอตรวจสอบเป็นสิทธิ์ของนักเรียน ไม่ใช่การต่อว่าครู (ข้อความนี้อยู่ทั้งฝั่งนักเรียนและฝั่งครู) • นักเรียนกดขอได้ภายใน 7 วันหลังสอบ (ตั้งได้) พร้อมเหตุผลที่ต้องเขียนให้ชัด (≥ 10 ตัวอักษร) • ครูตอบกลับ — และระบบ บังคับให้เขียนคำตอบก่อนปิดคำขอ if (['แก้ไขแล้ว','ยืนยันคะแนนเดิม'].indexOf(status) >= 0 && !String(reply||'').trim()) throw new Error('กรุณาเขียนคำตอบให้นักเรียน\n\n' + 'การปิดคำขอโดยไม่อธิบาย ทำให้นักเรียนไม่รู้ว่าเกิดอะไรขึ้น ' + 'และจะไม่กล้าถามอีกในครั้งหน้า'); • นักเรียนที่มีอีเมลได้รับแจ้งคำตอบทันที • คำขอไม่ถูกลบ — เก็บเป็นหลักฐานว่าเด็กเคยถามและครูตอบว่าอะไร
ระบบประกาศผลสอบรายบุคคล (Private Exam Results)
นักเรียนเห็นเฉพาะคะแนนของตัวเอง · ไม่มีระบบจัดอันดับโดยตั้งใจ · วิเคราะห์รายหัวข้อให้ครู
- Web App พร้อมใช้ ข้อมูลเก็บใน Google Sheet ของคุณเอง
- ได้ครบทุกไฟล์ + คู่มือติดตั้งภาษาไทย (README.md)
- แก้โค้ดต่อเองได้ ไม่ล็อก ไม่มีค่ารายเดือน
ใช้หลายระบบ ซื้อทั้งชุดคุ้มกว่า
ชุดโรงเรียน & กวดวิชา 15 ระบบ ฿878 ฿390 ประหยัด 56%