17
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GASで一日置きに通知のくるLINEbotを作る

Last updated at Posted at 2021-04-08

GASなら環境とかも整えなくても勝手に動いてくれるので、GASでLINEbotを作りました。
初心者の時に作ったのでかなり雑ですが、ここで供養…。
#はじめに
母親が一日置きにする家事を今日やったか昨日やったかいつも忘れていたので、勝手に通知してあげます。
スマホに疎くてもLINEなら使っているので通知に気づくかなと思い。
結果として考えなくても勝手に通知がくるので楽になったらしいのでやってよかったです。

#目標
1日置きにグループラインに通知がくる
(LINEAPIの仕様上グループラインに送るしかできないので家族のグループラインを作りました。)

  • LINE Notifyのトークンを取得する
  • GASを書く
  • トリガーを設定
  • その他

#つくりかた
LINE Notifyのトークンを取得する
https://notify-bot.line.me/ja/
LINE Notifyについてはこちらの方の記事がわかりやすいのでそちらを参考にしてみてください。

②GASを書く
1日置きに通知をしたいので、簡単な日にちの計算をする。

  • 今日の日にちを取得してスプレッドシートに記録
  • 記録した日にちと照らし合わせて2日前なら通知して通知した日を上書き
  • 1日前なら何もしない
//LINE NOTIFYトークン 
var token = ["ここに取得したトークンを書いてね"];

(忘れちゃったけどなんで配列にしてんだろ?そうする理由が何かあったのかな?)

//日付の計算をしてスプレッドシートに記載、真偽で返す
function getdate(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  var date = sheet.getRange("A1").getValue();
  var fmt_date = Utilities.formatDate(new Date(date), 'Asia/Tokyo', 'yyyy/MM/dd');
  var twodays = new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()-2);
  Logger.log(twodays);
  var fmt_twodays = Utilities.formatDate(twodays, 'Asia/Tokyo', 'yyyy/MM/dd');
  var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');
  
  if(fmt_date == fmt_twodays){  
  sheet.getRange("A1").setValue(today);
  return true;
    
  }else{
  return false;
  }  
};

後にみてわかりやすくするために、trueかfalseを返すようにしています。

//1日置きにLineに通知を送る
function LineNotify(){
  var message = '今日はお風呂のお湯を替える日だよ!\uDBC0\uDC5E';
  var options = 
      {"method" : "post",
       "payload" : "message=" + message,
       "headers" : {"Authorization" : "Bearer "+ token}
      };
  
  UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
};

これはこういう呪文だと思った方が良さそう。
送るのにこういう形式にしないとLINEさんが認知してくれないよ。
messageの終わりに書いてある\uDBC0\uDC5Eは絵文字。
※絵文字に関してはこちらのブログが参考になりました。めちゃくちゃありがとうございます。

//LINEに送るための関数
function sendLine(){
  var bool = getdate();
  if(bool == true){
    LineNotify()
  };
}

これで最後!

③トリガーを設定
GAS側の設定で、sendLineに設定します。
同じような時間にざっくりくれば良かったので時間ベースの13時頃にくるように設定しました。
きっかりこの時間にくるように!ということならまたコード書けばできるようになります。

その他
最後に一番初めに通知する日をセルのA1に書いてあげてください。(yyyy/MM/dd形式で)

ウェブアプリケーションで公開を選択しないと稼働しないので注意です。
(前のIDEなら公開ボタンがあったのだけど、新IDEだとデプロイボタン押して新しいデプロイを選ぶと幸せになれる気がする。)

こんな感じになります

#おわりに
これは事務員の仕事をしていた時に教えてもらいながら勉強した知識で作れたbotなので、エンジニアじゃない人にも是非作ってみてほしいです。
あと、こういうの作って一番嬉しいのは反応があることなので、何か作ってくれた人には反応してあげれる、そういう人に私はなりたい。
(大体こういう小さい便利グッズつくって褒めてくれるのはエンジニアたち)

ここはこうした方がいいとかかあればご教示いただきたいです。。

17
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?