ดึงราคาน้ำมันแจ้งเตือนใน Line Notify

1288
แจ้งเตือนราคาน้ำมัน
แจ้งเตือนราคาน้ำมัน

สวัสดีครับ วันนี้ผมจะพาทำระบบแจ้งเตือนราคาน้ำมันผ่าน Line Notify กันครับ ครั้งนี้ผมจะดึงราคาน้ำมัน ปตท. จากเว็บไซด์ https://www1.pttor.com/oilprice-board.aspx นี้ครับ และใช้ API ของ Cheerio ครับ และมีสคริปไอดี ดังนี้ 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

ผมขอข้ามขั้นตอนในการออก Token นะครับ ส่วนใครที่ยังออก Token ไม่เป็น สามารถดูวิธีการออก Token ได้ทาง Youtube หรือติดต่อสอบถามมายังผมได้ครับ

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

รูปที่ 1 การใส่รหัสสคริปต์ไอดี

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

รูปที่ 2 การเพิ่ม Cheerio

เมื่อเราได้ติดตั้ง API Cheerio แล้ว ต่อมาก็ทำการเขียนสคริปได้เลยครับ สคริปนี้จะมีอยู่ 2 ฟังก์ชั่น ได้แก่ ฟังก์ชั่นการดึงข้อมูลราคาน้ำมัน (oilPrice) และฟังก์ชั่นการส่ง Line (sendLineNotify2) นั้นเอง

function oilPrice() {
  //พัฒนาโดย นายศราวุธ ชนะบำรุง ติดต่อ.0908634901

  var token = "รหัส Token"; //TOKEN
  var webURL = "https://www1.pttor.com/oilprice-board.aspx";
  var response = UrlFetchApp.fetch(webURL);
  var $ = Cheerio.load(response.getContentText());
  var date = $(".obox-subhead").text().trim();
  var diesel_premium_b7 = $(".oil-board").children().eq(0).text().trim();
  var diesel_b7 = $(".oil-board").children().eq(1).text().trim();
  var diesel = $(".oil-board").children().eq(2).text().trim();
  var diesel_b20 = $(".oil-board").children().eq(3).text().trim();
  var gasoline = $(".oil-board").children().eq(4).text().trim();
  var gasoline_95 = $(".oil-board").children().eq(5).text().trim();
  var gasoline_91 = $(".oil-board").children().eq(6).text().trim();
  var gasoline_e20 = $(".oil-board").children().eq(7).text().trim();
  var gasoline_e85 = $(".oil-board").children().eq(8).text().trim();
  var ngv = $(".oil-board").children().eq(9).text().trim();
  var message = "\n"+ "ราคาน้ำมัน ปตท. วันนี้"+"\n"+date+"\n"+"\n"
              +"ดีเซล พรีเมี่ยม B7 ราคา "+diesel_premium_b7 +" บ."+"\n"
              +"ดีเซล B7 ราคา "+diesel_b7 +" บ."+"\n"
              +"ดีเซล ราคา "+diesel +" บ."+"\n"
              +"ดีเซล B20 ราคา "+diesel_b20 +" บ."+"\n"
              +"เบนซิน ราคา "+gasoline +" บ."+"\n"
              +"เบนซิน แก๊สโซฮอลล์ 95 ราคา "+gasoline_95 +" บ."+"\n"
              +"เบนซิน แก๊สโซฮอลล์ 91 ราคา "+gasoline_91 +" บ."+"\n"
              +"เบนซิน แก๊สโซฮอลล์ E20 ราคา "+gasoline_e20 +" บ."+"\n"
              +"เบนซิน แก๊สโซฮอลล์ E85 ราคา "+gasoline_e85 +" บ."+"\n"
              +"NGV ราคา "+ngv +" บ."
  sendLineNotify2(message, token)
}
function sendLineNotify2(message, token) {
  var options =
  {
    "method": "post",
    "payload":

    {
      "message": message,
    },
    "headers": { "Authorization": "Bearer " + token }
  };
  UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

เมื่อนำทั้ง 2 ฟังก์ชั่นใส่ใน AppScript แล้ว เราจะมาตั้งทริกเกอร์ให้ทำงานกัน โดยให้เลือกฟังก์ชั่นที่จะเรียกได้ คือ ฟังก์ชั่น OilPrice จากนั้นเลือกแหล่งที่มาของกิจกรรม ได้แก่ ตามเวลา จากนั้นให้เลือกประเภทของทริกเกอร์ตามเวลาเป็น เครื่องมือจับเวลาเป็นวัน จากนั้นให้เลือกเวลาของวันอยู่ที่จะให้แสดงผลผ่าน Line Notify ตอนไหน ผมเลือก 15.00 น. ถึง 16.00 น. เวลาช่วงที่เลือกนี้ทาง Google จะสุ่มการทำงานให้ จะไม่สามารถระบุเวลาเฉพาะเจาะจงได้ นอกจากต้องเขียนโค้ดขึ้นมาใหม่ เดี่ยวผมจะมาสอนในครั้งต่อไป ส่วนการตั้งค่าการแจ้งเตือนความล้มเหลวให้ แจ้งเตือนทันที ครับ เป็นอันเสร็จ จากนั้นทำการกดปุ่มบันทึกได้เลย

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

ตัวอย่างการเรียกใช้ฟังก์ชั่น

เมื่อกดทดสอบดู ระบบ Line Notify ก็จะส่งข้อมูลราคาน้ำมันให้ดังรูปครับ

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

Print Friendly, PDF & Email