💁‍♀️

【LINE Notify × GAS】出社日だけ母親に「今日の夜ごはん何?」って聞いてくれるbotを作った

2023/02/21に公開

はじめに

この記事は、LINE NotifyとGAS(Google Apps Script)を使って、母親に「今日の夜ごはん何?」と聞いてくれるbotを作ったときのことをまとめた記事です。

私について

  • プログラミング初心者
  • 1人暮らしを3年ほどしたあと、実家暮らしに戻る
  • 今年の2月に転職。週3出社 + 週2テレワークの職場に
  • 通勤に1時間半くらいかかるので、出社したときは退勤時に今日の夜ごはんは何か知りたい!
    👉 プログラミングの勉強も兼ねて、自動で送ってくれるようにしてみよう!

LINE Notify とは

  • LINEとWebサービスを連携することで、LINEユーザーが簡単に通知を受信できるようになるサービス
  • 利用料は無料
  • 1時間にAPIをcallできる回数は1000回まで

https://notify-bot.line.me/ja/

GAS(Google Apps Script)とは

  • Googleが提供するアプリケーション開発プラットフォーム
  • HTML、CSS、JavaScriptなど、身近なWeb言語を使って処理を記述できる
  • GASを使うとGmailやGoogleカレンダーなどの各種Googleサービスを自動化することができる

https://workspace.google.co.jp/intl/ja/products/apps-script/
https://satori.marketing/marketing-blog/gas-introduction/

botを作る手順

1. LINE Notifyを友達追加する(初回のみ)

  • 友達検索(ID)で、「@linenotify」と検索して友達に追加してください
    LINE Notifyのプロフィール画像

2. 通知を送りたいLINEグループの作成(既存グループ以外に送る場合)

  • 今回は、母親・私・LINE Notifyのグループを作ります
  • 既存グループに送る場合は、既存グループにLINE Notifyを追加でOK

3. LINE Notifyにログイン

  1. https://notify-bot.line.me/ja/ にアクセスする
  2. 右上からログインする
    LINE Notifyログイン画面

4. アクセストークンの発行

GASとLINE Notifyを連携するためのトークンを発行しましょう。
手順は以下👇

  1. [マイページ] → [アクセストークンを発行する]
    ・トークン名:LINEで通知される際、メッセージの先頭に[ ]付きで表示される
  2. 通知を送信するトークルームを選択する
  3. トークンが発行されるので、コピーしておく
    アクセストークンの発行1
    アクセストークンの発行2

5. GAS側でコードを記述

いよいよコードを記述していきます!

  1. Googleドライブにログインし、新規のGASを作成
    新規GAS
  2. 以下のコードをGASに記述する
    ・1行目のtokenには、先ほどコピーしたトークンを貼り付けてください
コード.gs
const token = '先ほどコピーしたトークンを貼り付け';
const lineNotifyApi = 'https://notify-api.line.me/api/notify';

function doPost() {
  // 今日の日付オブジェクトを生成
  const date = new Date();
  //曜日の番号を取得  日曜日は「0」,土曜日なら「6」を返す
  const day = date.getDay();

  // メッセージを定義
  const message = 'ごはんなに?';
  // メッセージの送信設定
  const options = {
    "method"  : "post",
    "payload" : {"message": message},
    "headers" : {"Authorization":"Bearer " + token}
  };

  // 出社日(水・木・金)だけメッセージを送る
  switch(day) {
    case 3:
    case 4:
    case 5:
      UrlFetchApp.fetch(lineNotifyApi, options);
      break;
    // 出社日以外は処理を終了
    default:
      break;
  }
}

6. 手動で実行してみる

ここまでできたら一度手動で実行してみます。
手順は以下👇

  1. switch文にテスト時の曜日を追加する(この日は月曜日だったのでcase 1を追加)
コード.gs
  switch(day) {
+   case 1: // テスト用に追加、あとで消す
    case 3:
    case 4:
    case 5:
      UrlFetchApp.fetch(lineNotifyApi, options);
      break;
    // 出社日以外は処理を終了
    default:
      break;
  }
  1. 画像の部分から関数を実行する
    関数を実行
  2. 以下のような警告が出るので、承認する
    権限を承認
    警告1
    警告2
    LINEに通知が来たら成功です!🎉
    LINE画像

7. GASの実行タイミングを設定

自動で実行するための設定をします。

  1. GASに戻ってテスト用に追加したcase 1を消す
  2. 左側の[トリガー] → [トリガーを追加]でトリガーを設定する
    トリガーを選択
    今回は、[時間ベースのトリガーのタイプを選択: 日付ベースのタイマー]、[時刻を選択: 午後5時〜6時s]に設定します。
    トリガーの設定
    これで出社日(水・木・金)だけ自動でメッセージが送信されるようになりました!🥳

おわりに

初めは「LINEbot = LINE Messaging APIを使うもの」と思い込んであれこれ詰まりましたが、「今回やりたいことはLINE Notifyで実現できる」と分かってからはスムーズでした!
LINE Notify × GASは以下のような場面で活用できると思います。
・毎月15日、職場のグループLINEにシフト提出締め切りのアナウンスを流す
・毎日3回、父親に薬を飲んだか聞く
・毎日1回、友人と自分に筋トレしたか聞く
など…
他にも何か、思いついたら活用してみたいです!!💪🏻

その他参考

https://daily-coding.com/gas_line/
https://daily-coding.com/getday/

Discussion