Template ระบบแจ้งเตือนต่ออายุเอกสารผ่าน Line

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

Screenshot

โดยระบบเป็นระบบ แจ้งเตือนต่ออายุแบบง่ายๆ ซึ่งสามารถ download จากลิงค์ด้านล่างนี้ได้เลย

🔗 Template ระบบแจ้งเตือนต่ออายุเอกสารผ่าน Line

ซึ่งทุกคนก็สามารถทำการ copy template แล้วทำการกรอก event การแจ้งเตือนของบริษัทเราลงไปในหน้า “รายการรวมได้ทันที”

และหลังจากนั้นเราก็สามารถทำการเพิ่ม script การแจ้งเตือนเพื่อให้ระบบทำการส่งแจ้งเตือน event ที่เกินกำหนดแล้วมายัง line ของเราได้โดยสามารถเข้าที่หน้า “ส่วนขาย -> App Script” ได้ทันที

Screenshot

หลังจากนั้นระบบจะพาเรามาที่หน้าเขียน Script ใน Google App Script ก็สามารถทำการ copy code ด้านล่างนี้มาวางได้เลย

// แก้ไขข้อมูลที่นี้ก่อนใช้งาน //
const sheetid = "sheetid"; //ใส่ ID ของ Google Sheets ของเราจาก URL ของ Google Sheets
var accessToken = 'Channel Accesstoken'; //ใส่ Channel Accesstoken จาก https://developers.line.biz
var recId = 'userid or groupid'; //กรณีต้องการส่งข้อความไปยัง user หา ID user จาก https://webhook.site/

var ssAlert = "รวมรายการแจ้งเตือน";

function sendAlert() {
  const sheet = SpreadsheetApp.openById(sheetid).getSheetByName(ssAlert);
  const lr = sheet.getLastRow();

  if (lr < 2) {
    Logger.log("No data to send.");
    return;
  }
  
  const range = sheet.getRange('A2:E' + lr);
  const values = range.getValues();
  Logger.log(values);
  Logger.log(flattenArrayToString(values,0));

  sendLineMessage(accessToken, recId, "แจ้งเตือนสิ่งที่ต้องทำ "+Utilities.formatDate(new Date(), "GMT+7", "dd/MM/yyyy")+'\n\n'+flattenArrayToString(values,0));
}

function flattenArrayToString(arr) {
  // Helper function to format dates in DD/MM/YYYY
  function formatDate(cell) {
    if (Object.prototype.toString.call(cell) === '[object Date]' && !isNaN(cell)) {
      return Utilities.formatDate(cell, "GMT+7", "dd/MM/yyyy");
    }
    return cell;
  }

  return arr
    .map(row => 
      row.map(cell => formatDate(cell)) // Format each cell
        .join(' : ') // Join each cell in the row with :
    )
    .join('\n'); // Separate each row with newline
}

function sendLineMessage(token, recipientId, text) {
  var payload = JSON.stringify({
    to: recipientId,
    messages: [{type: 'text', text: text}]
  });

  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'headers': {
      'Authorization': 'Bearer ' + token
    },
    'payload': payload
  };

  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', options);
}

โดยสิ่งที่จำเป็นต้องเปลี่ยนแปลงหลักๆคือ

  1. sheetid ที่ให้เราไปนำเอา url ของ google sheets ที่ต้องการส่งแจ้งเตือน (คัดลอกตั้งแต่หลัง d/ จนถึงก่อน /edit มาวาง)
  2. accessToken ให้เราใส่ Channel Accesstoken จากหน้า Line Developer
  3. redId เป็น id ของกลุ่มหรือ user line ที่จะให้ script ส่งข้อความแจ้งเตือนไป โดยเราสามารถนำ link webhook จาก webhook.site ไปผูกใน lineOA แล้วให้ใช้ user ที่เราต้องการจะส่งข้อมูลทักเข้าไปเพื่อแสดง userID ของ user นั้นๆได้เลย
  4. กรณีที่ชื่อชีทที่ต้องการส่งข้อมูลแจ้งเตือนไม่ได้เป็น “รวมรายการแจ้งเตือน” ให้เราการแก้ไขที่ตัวแปร ssAlert
  5. กรณีที่ช่วงของข้อมูลที่ส่งไม่ได้อยู่ที่ column A:E ก็ให้เราแก้ไขที่ตัวแปร range ใน function sendAlert

(กรณีใช้ template ด้านบนก็ให้เราปรับแก้แค่ข้อ 1-3 ได้เลย)

หลังจากปรับแก้เสร็จก็ให้เราทำการสร้าง trigger เพื่อให้ระบบทำการเช็คข้อมูลในทุกๆวันเพื่อส่งข้อมูลมายังไลน์ของเราได้เลย

Screenshot

โดยเราสามารถตั้งค่า trigger ดังต่อไปนี้ได้เพื่อให้ระบบส่งข้อมูลแจ้งเตือนมาทุกๆ วันตอน 8.00-9.00 ได้เลย (หรือถ้าอยากจะเปลี่ยนเวลาก็สามารถปรับได้เองเลยครับ)

Screenshot

ถ้าใครงงขั้นตอนใหนก็สามารถกดดูรายละเอียดเพิ่มเติมได้ที่คลิปด้านล่างเลยครับ

@noobitguy

สอนสร้างระบบแจ้งเตือนต่ออายุเอกสารผ่าน Line แบบอัตโนมัติ #googlesheets #linemessagingapi #noobitguy #freetemplate

♬ original sound – บริหารงานแบบคนไอที – บริหารงานแบบคนไอที

💳 ชอบคลิปที่ช่วยเพิ่มประสิทธิภาพการทำงานแบบนี้สามารถสมัครสมาชิกช่องได้ที่ 
https://www.youtube.com/channel/UChxmhkD8uSSzUOkfMO_p5oQ/join

🎥 อุปกรณ์ที่ผมใช้

กล้อง Sony ZV-E10 kit 16-50mm
Mouse Logitech MX Master 3s
MacBook Air M2
ไมค์ wireless Saramonic Blink 500
เก้าอี้ Anda Seat X-Air Pro Ergonomic Gaming Chair
แขนจับจอ Anda Seat Stealth A6L Ergonomic Monitor Arm
ไมโครโฟน AKG Lyra
ไฟส่องหน้าจอ Xiaomi Light Bar

Leave a Reply

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