2017年8月10日木曜日

Google Apps ScriptでLINEにゴミ収集日を通知する


ゴミ収集日を自動的にLINEにPush通知してくれるbotを、Google Apps Script(GAS) と LINE Notify を使って作りました。




GASとLINE Notifyで何か作りたいと思い、手近な題材としてゴミ収集日の通知botとしました。特に資源ゴミ等は○週目の○曜日など規則性がちょっぴり複雑なので、リマインダとして有用です。

まあこの目的ならIFTTTとかリマインダアプリで事足りそうですが、GASでやってみたかったので。

機能
・前日の夜10時頃に、翌日がゴミの日なら通知します。
・当日の朝6時頃にも、当日がゴミの日なら通知します。

使用したもの
1) LINE Notify・・・LINEへのPush通知
2) Google Spreadsheet・・・今日または明日がゴミ収集日に該当するか判定する
3) Google Apps Script・・・毎日指定時間にSpreadsheetをチェックし、該当があればLINE NotifyにPostする


1) LINE Notifyでアクセストークンを取得しておきます。

2) 収集日に該当するかの判定はGoogle Spreadsheetで行いました。ゴミ収集日の表を作成し、TODAY()などの関数を組み合わせて、特定のセルに判定結果を表示させるようにしておきます。下図ではH1セルとH3セルです。


GASで全部やってもいいのですが、Spreadsheetの方が
 ・普段エクセル関数を使い慣れているので多少複雑な規則性でも表現しやすい
 ・引っ越しで曜日などが変わったときも変更しやすい
 ・他の人(というか数か月後に記憶が飛んだ自分)にも何してるか分かりやすい
などのメリットを感じたので、GASは最小限の処理だけにしました。

3) GASで2)のSpreadsheetの判定結果セルを読みに行き、該当があればLINE NotifyにPostします。
GAS関数を翌日用と当日用の2種類作りました。これに対応してトリガーも2種類設定しました。



GASスクリプト
----------------------------------------------------------------------------
function lineNotifyPost(msg) {
  var accessToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'; //LINE Notifyのアクセストークン
  var message = msg;
  var options = {
    'method' : 'post',
    'headers': {
      'Authorization': 'Bearer ' + accessToken
    },
    'payload' : {
      'message': message
    }
  };
  var response = UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options);
  Logger.log(response);
}

function check_Today() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('ごみ収集日');
  var str = sheet.getRange('H1').getValue();
  if(str != 'NoAnswer'){
    var message = '今日は ' + str + ' の収集日です。';
    lineNotifyPost(message);
  }
}

function check_Tomorrow() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('ごみ収集日');
  var str = sheet.getRange('H3').getValue();
  if(str != 'NoAnswer'){
    var message = '明日は ' + str + ' の収集日です。';
    lineNotifyPost(message);
  }
}
----------------------------------------------------------------------------

参考にさせていただいた主な記事
Webブラウザーで作ったプログラムからLINEに好きなメッセージを送信
LINEのグループにBOTが予定を呟くと意外と便利だった話


ついでに、この記事↓をほぼ丸写しで、LINE Messaging APIとGASでオウム返しbotもとりあえずできた。何か思いついたら改造してみたい。
Google Apps Scriptを使ってLINE Messaging APIでオウム返しをする

   

0 件のコメント:

コメントを投稿