ระบบรายงานผลการดำเนินงานรายสัปดาห์สำหรับผู้บริหาร
สัปดาห์ปัจจุบัน: ...
ข้อมูลเหล่านี้จะถูกบันทึกไว้ใน Browser (LocalStorage) ของคุณ และอัปเดตไปยังหน้าแดชบอร์ดโดยอัตโนมัติ
| หน่วยงาน | ความคืบหน้า | สถานะ | วันที่อัปเดต | จัดการ |
|---|
พิมพ์เขียวฉบับนี้ช่วยให้ฝ่ายไอทีหรือผู้ดูแลระบบสามารถแปลงรายงานสั้นและรูปภาพที่ส่งในกลุ่ม LINE Group เข้าสู่ Google Sheets และแสดงผลบน Web Dashboard ได้อย่างอัตโนมัติ โดยมีขั้นตอนดังต่อไปนี้:
สร้าง Google Sheets ขึ้นมา 1 ไฟล์ ตั้งชื่อว่า "Weekly_Report_DB" และกำหนดหัวตารางในแถวแรก (Row 1) จากซ้ายไปขวา ดังนี้:
ไปที่เมนู Extensions (ส่วนขยาย) > Apps Script บน Google Sheets ของคุณ ลบโค้ดเดิมที่มีอยู่ออกทั้งหมด แล้วคัดลอกโค้ดด้านล่างนี้ไปวางแทนที่:
function doGet() {
return HtmlService.createTemplateFromFile('Index')
.evaluate()
.setTitle('Weekly Executive Dashboard')
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
function getWeeklyData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var result = [];
// วนลูปอ่านข้อมูลตั้งแต่แถวที่ 2 เป็นต้นไป (ข้ามหัวตาราง)
for (var i = 1; i < data.length; i++) {
if(!data[i][0]) continue; // ข้ามแถวที่ว่างเปล่า
// แปลงฟอร์แมตวันที่ให้อ่านง่าย
var formattedDate = "";
try {
formattedDate = Utilities.formatDate(new Date(data[i][0]), "GMT+7", "dd/MM/yyyy");
} catch(e) {
formattedDate = data[i][0].toString();
}
result.push({
timestamp: formattedDate,
dept: data[i][1],
detail: data[i][2],
imageUrl: data[i][3],
status: data[i][4]
});
}
return result.reverse(); // นำงานล่าสุดแสดงขึ้นก่อน
}
// ฟังก์ชัน API รับข้อมูลจาก LINE Webhook (สำหรับ Developer เพื่อจัดเก็บข้อมูลอัตโนมัติ)
function doPost(e) {
try {
var json = JSON.parse(e.postData.contents);
var events = json.events;
if (events && events.length > 0) {
var event = events[0];
var replyToken = event.replyToken;
var message = event.message;
// ตรวจสอบแฮชแท็ก #ส่งงาน
if (message && message.type === 'text' && message.text.includes('#ส่งงาน')) {
var text = message.text;
var lines = text.split('\n');
var dept = "ไม่ได้ระบุหน่วยงาน";
var detail = text.replace('#ส่งงาน', '').trim();
// จำแนกข้อมูลแบบง่าย (ตัวอย่าง: บรรทัดแรกเป็นชื่อหน่วยงาน บรรทัดถัดไปเป็นรายละเอียด)
if(lines.length > 1) {
dept = lines[0].replace('#ส่งงาน', '').trim();
detail = lines.slice(1).join('\n').trim();
}
// ทำการบันทึกลง Google Sheet
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.appendRow([new Date(), dept, detail, "", "กำลังทำ"]);
// ส่งข้อความตอบกลับไปยัง LINE Group
replyLine(replyToken, "บันทึกรายงานของ '" + dept + "' ลงฐานข้อมูลสำเร็จแล้ว! กรุณาเพิ่มรูปหลักฐานในระบบ (หากมี)");
}
}
} catch(err) {
// บันทึกข้อผิดพลาดกรณีระบบทำงานขัดข้อง
console.error(err);
}
}
ทางเลือกที่ 1: วิธีประหยัดเวลาและไม่ต้องเขียนโค้ด (แนะนำสำหรับ Admin ทั่วไป)
ให้แอดมินประจำทีมเปิด LINE บนคอมพิวเตอร์ (LINE PC) คัดลอกข้อความรายงานและบันทึกรูปภาพจากที่สมาชิกส่งเข้ามาในกลุ่ม นำมาพิมพ์กรอกลงบนหน้า Google Sheets โดยตรง สัปดาห์ละครั้ง (ใช้เวลาเพียง 15-20 นาที) หน้าเว็บ Dashboard สำหรับผู้บริหารตัวนี้จะอัปเดตอัตโนมัติทันที
ทางเลือกที่ 2: ใช้ LINE Messaging API + Webhook (สำหรับ Developer)
สร้าง LINE Bot (Provider & Channel) ใน LINE Developers Console แล้วเปิดใช้งาน Webhook และนำลิงก์ Web App URL ที่ได้จากการ Deploy Apps Script ข้างต้นไปวาง เพื่อให้ระบบสามารถตรวจจับแฮชแท็ก #ส่งงาน และรูปภาพ แล้วนำมาบันทึกใน Google Sheets โดยอัตโนมัติ