เว็บวิเคราะห์ข้อมูลแบบประเมินผลการดำเนินการโครงการของสโมสรฯ — โยนไฟล์ .xlsx
ที่ดาวน์โหลดจาก Google Forms เข้าไป แล้วได้ผลวิเคราะห์ครบทุกด้าน พร้อมส่วน
"รายงานราชการ" ที่คัดลอกไปวางในเล่มสรุปผลโครงการ (Microsoft Word) ได้ทันที
🌐 ใช้งานออนไลน์: https://sunkinincode.github.io/eval-analyzer/
ถึงจะเปิดผ่านเว็บ ข้อมูลในไฟล์ .xlsx ก็ยังประมวลผลอยู่ในเบราว์เซอร์ของผู้ใช้เท่านั้น ไม่มีการส่งขึ้นเซิร์ฟเวอร์ใด ๆ (ประวัติ/ผู้ใช้เก็บใน IndexedDB ของแต่ละเครื่อง)
วิธีที่ 1 (ง่ายสุด): ดับเบิลคลิก index.html เปิดในเบราว์เซอร์ได้เลย
(ทุกอย่างทำงานในเครื่อง ไม่ต้องต่อเน็ต ไม่ต้องมีเซิร์ฟเวอร์ — ยกเว้นปุ่ม
"ลองใช้ด้วยข้อมูลตัวอย่าง" ที่ต้องเปิดผ่านเซิร์ฟเวอร์ หรือใช้วิธีลากไฟล์
sample-data.xlsx มาวางแทน)
วิธีที่ 2: เปิดผ่านเซิร์ฟเวอร์ในเครื่อง
cd "โฟลเดอร์นี้"
python3 -m http.server 8787
# แล้วเปิด http://localhost:8787- เข้า Google Forms → การตอบกลับ → ดาวน์โหลดเป็น
.xlsx(หรือเปิดใน Google Sheets แล้ว File → Download → Microsoft Excel) - ลากไฟล์มาวางในหน้าเว็บ
- ตรวจตัวอย่างก่อนนำเข้า: เลือกชีต และดูจำนวนแถว/คอลัมน์กับชนิดคำถามที่ระบบจำแนก
- ระบบจะตรวจชนิดคำถามอัตโนมัติ:
- คะแนน 1–5 (คำถามตาราง Google Forms ในรูปแบบ
หัวข้อ [รายการ]จะถูกจัดกลุ่มเป็น "ด้าน" ให้เอง) → x̄, S.D., ความถี่, ร้อยละ, ระดับผล - SDGs / คำตอบสองค่า ("สอดคล้อง / บรรลุ" – "ไม่สอดคล้อง") → ร้อยละความสอดคล้อง
- ข้อมูลทั่วไป (สถานะ เพศ ชั้นปี ฯลฯ) → ความถี่ + ร้อยละ
- ข้อความปลายเปิด (ข้อเสนอแนะ) → รวมรายการพร้อมนับซ้ำ
- ตรวจผิดตรงไหน แก้ได้ที่แท็บ ตั้งค่าคอลัมน์
- คะแนน 1–5 (คำถามตาราง Google Forms ในรูปแบบ
- กรองผลตามกลุ่มผู้ตอบได้จากแถบด้านบน (นักเรียน / นักศึกษา / ครู ฯลฯ)
- เปิดแท็บ 💼 สรุปผู้บริหาร เพื่อดูผลสำคัญ 1 หน้า แล้วกด บันทึก PDF (เลือก Save as PDF ในหน้าพิมพ์) หรือคัดลอกเพื่อส่งต่อ
- ไปที่แท็บ 📄 รายงานราชการ → พิมพ์ชื่อโครงการ → กด คัดลอก
แล้วไปวางใน Word ได้เลย (ฟอนต์ TH Sarabun 16pt ตารางเส้นทึบ
พร้อมคำบรรยายใต้ตารางแบบงานวิจัย) หรือดาวน์โหลดเป็น
.doc/ พิมพ์เป็น PDF
- เปิดครั้งแรกระบบจะให้ กรอกชื่อ/ตำแหน่ง ก่อนใช้งาน (เก็บในเบราว์เซอร์เครื่องนั้น ไม่ส่งขึ้นอินเทอร์เน็ต) เพื่อบันทึกว่าใครวิเคราะห์ข้อมูลครั้งไหน — ดูรายชื่อผู้ใช้ได้ที่แท็บ 🕘 ประวัติ
- ทุกไฟล์ที่อัปโหลดจะถูก บันทึกเข้าประวัติอัตโนมัติ (IndexedDB ของเบราว์เซอร์) เปิดดูซ้ำได้จากแท็บประวัติหรือหน้าแรก โดยไม่ต้องอัปโหลดไฟล์ใหม่ ชื่อโครงการและการตั้งค่าคอลัมน์ที่แก้ไว้จะถูกจำไปด้วย
- ประวัติจะถูก ลบอัตโนมัติเมื่อเก็บครบ 15 วัน (และกดลบเองได้ทุกเมื่อ)
- ข้อจำกัด: ประวัติผูกกับเบราว์เซอร์+เครื่องที่ใช้ ไม่แชร์ข้ามเครื่อง (ถ้าต้องการใช้ร่วมกันหลายคนจริง ๆ ต้องมีเซิร์ฟเวอร์กลาง — แจ้งได้ถ้าต้องการ)
หลังนำเข้าข้อมูล ให้กด ตั้งค่า บนแถบด้านบน แล้วเลือก ส่งออกการตั้งค่า
เพื่อบันทึกชนิดคอลัมน์ การจัดด้าน การรวมตัวเลือก บทบาทผู้ตอบ และตัวเลือกรายงานเป็น
ไฟล์ .evalconfig ไฟล์นี้ไม่มีคำตอบของผู้ประเมิน นำมาใช้กับแบบประเมินรูปแบบเดิมได้จาก
ปุ่ม นำเข้าการตั้งค่า หลังเปิดไฟล์ข้อมูลชุดใหม่แล้ว
แท็บ SDGs แสดงการ์ดพร้อม โลโก้ทางการของ UN (ดาวน์โหลดจาก sdgs.un.org
เก็บไว้ใน assets/sdg/ ใช้งานออฟไลน์ได้) ร้อยละความสอดคล้อง แถบความคืบหน้า
และป้ายสรุปผลตามเกณฑ์ ≥ 50%
- แนบรูปแผนภูมิ — แทรกกราฟพื้นขาวพร้อมเลขแผนภูมิ
- แสดงความถี่รายระดับ (5–1) — เพิ่มคอลัมน์จำนวน/ร้อยละของแต่ละระดับคะแนนในตาราง
- ใช้เลขไทย — แปลงตัวเลขทั้งรายงานเป็นเลขไทยตามธรรมเนียมหนังสือราชการ
| ค่าเฉลี่ย | ระดับ |
|---|---|
| 4.51–5.00 | มากที่สุด |
| 3.51–4.50 | มาก |
| 2.51–3.50 | ปานกลาง |
| 1.51–2.50 | น้อย |
| 1.00–1.50 | ควรปรับปรุง |
ความสอดคล้อง SDGs ถือเกณฑ์ผู้ตอบ ≥ ร้อยละ 50 · S.D. คำนวณแบบกลุ่มตัวอย่าง (n−1)
index.html หน้าเว็บหลัก (เลย์เอาต์ sidebar)
app.js ส่วนควบคุม UI, กราฟ, รายงาน และประวัติ/ผู้ใช้ (IndexedDB)
analysis.js แกนวิเคราะห์ข้อมูลแบบ pure: แปลงคะแนน, สถิติ, SDGs และการจัดกลุ่ม
storage.js ตัวเชื่อม IndexedDB สำหรับประวัติและผู้ใช้ (ไม่ผูกกับ UI)
ingest-worker.js อ่านไฟล์ Excel นอก UI thread สำหรับไฟล์ขนาดใหญ่ (มี fallback อัตโนมัติ)
styles.css ธีมโมเดิร์นสว่าง/มืดอัตโนมัติ (ฟอนต์ Anuphan)
vendor/ ไลบรารี SheetJS + Chart.js + ไอคอน Lucide + ฟอนต์ Anuphan (ออฟไลน์ทั้งหมด)
assets/sdg/ โลโก้ SDG ทางการ 17 เป้าหมาย (จาก sdgs.un.org)
sample-data.xlsx ข้อมูลตัวอย่าง 92 คำตอบตามโครงสร้างแบบประเมินจริง
tools/make-sample.js สคริปต์สร้างข้อมูลตัวอย่างใหม่ (node tools/make-sample.js)
tests/analysis.test.mjs ชุดทดสอบแกนวิเคราะห์ข้อมูล
node --test tests/analysis.test.mjs
node --check app.js- เลือกชีตที่มีข้อมูลมากที่สุดให้อัตโนมัติ (เปลี่ยนชีตเองได้จากแถบบน)
- ข้ามแถวชื่อเรื่อง/แถวว่างเหนือหัวตารางให้เอง
- คอลัมน์ที่ไม่มีชื่อหัวจะไม่ถูกตัดทิ้ง (ตั้งชื่อ "คอลัมน์ที่ n" ให้)
- คำตอบแบบข้อความ ("มากที่สุด", "เห็นด้วยอย่างยิ่ง", "5 - มากที่สุด") แปลงเป็นคะแนน 1–5 ให้อัตโนมัติ
- จำนวนผู้ตอบต่อคำถามดูได้ที่แท็บ "ตั้งค่าคอลัมน์" (คอลัมน์ "ตอบแล้ว") — ตัวเลขไม่เท่ากันเป็นเรื่องปกติเพราะแบบฟอร์มแยกชุดคำถามตามกลุ่มผู้ตอบ
ข้อมูลทุกอย่างประมวลผลในเบราว์เซอร์ ไม่มีการส่งออกนอกเครื่อง (สอดคล้อง PDPA)
ดึงคำตอบตรงจาก Google Sheet ของฟอร์ม แล้วกด "ซิงค์" เพื่อได้ค่าล่าสุด (ข้อมูลวิ่งตรง เบราว์เซอร์ ↔ Google ไม่ผ่านเซิร์ฟเวอร์ใด) — Google ไม่ push การเปลี่ยนแปลง ฉะนั้น "เรียลไทม์" = กดซิงค์เมื่อต้องการ
ตั้งค่าครั้งเดียว (ต้องมี Google Cloud project ของคุณเอง):
- เปิด console.cloud.google.com → สร้างโปรเจกต์
- APIs & Services → Library → เปิดใช้ Google Sheets API
- OAuth consent screen → External → เพิ่มอีเมลตัวเองใน Test users (ได้ถึง 100 คนโดยไม่ต้องผ่าน verification)
- Credentials → Create → OAuth client ID → Web application
- Authorized JavaScript origins ใส่:
https://sunkinincode.github.io(และhttp://localhost:8787ถ้าทดสอบในเครื่อง)
- Authorized JavaScript origins ใส่:
- คัดลอก Client ID มาวางในกล่อง "ตั้งค่าครั้งแรก" ในแอป (เก็บใน localStorage จำไว้)
จากนั้นกด "เชื่อม Google Sheet" → วางลิงก์ชีต → อนุญาต Google → ระบบอ่านชีตที่ใหญ่ที่สุด มาวิเคราะห์ พร้อม ล็อกอินด้วยบัญชี Google จริง (ชื่อ/อีเมล) ให้อัตโนมัติ
การประเมินไม่ได้ทำคนเดียว — คนที่ไม่เชี่ยวชาญทำเสร็จแล้วส่งมาให้ตรวจก่อนได้:
- ผู้ทำกด "ส่งให้ตรวจ" (แถบบน) → ได้ไฟล์
.evalproj→ ส่งทาง LINE/เมล - ผู้ตรวจ ลากไฟล์ .evalproj เข้าแอป → เห็นการวิเคราะห์เป๊ะเหมือนกัน + แถบ "กำลังตรวจงาน"
→ ตรวจตัวเลข/แก้การจัดด้านได้ทุกหน้า → ใส่ความเห็น → กด "ผ่าน" หรือ "มีข้อแก้ไข"
→ ได้ไฟล์
-ตรวจแล้ว.evalprojส่งกลับ - ผู้ทำเปิดไฟล์ที่ส่งกลับ → เห็นแถบ "ผลการตรวจงาน" (สถานะ + ความเห็น + ผู้ตรวจ)
ไฟล์
.evalprojเดินทางเป็นไฟล์ที่คุณคุมเอง ไม่ผ่านเซิร์ฟเวอร์ — ปลอดภัยตาม PDPA