LoginSignup
9
1

More than 3 years have passed since last update.

Googleカレンダーの情報をLINEグループに自動配信する

Last updated at Posted at 2020-11-14

留学+自粛生活で四股を踏んじゃいたくなるくらいに太り、ちょっと前からスポーツトレーナーの友達にトレーニング・食事と体重の管理をお願いしています。

でも、しょっちゅう報告を忘れるし、それで怒られるしで(自分が悪いケド)LINEbotを使ってこの作業を自動化させたいと思います。

sumo_rikishi_harite2.png

機能概要

・Googleカレンダーに記録したデータをLINEで送る(←今回はここを作ります)
・特定の時間までに記録されてなければリマインドする
・毎週日曜日に月/週の経緯(グラフ画像)を送る
・前日と比較して体重が減ってたらめちゃくちゃに褒めてくれる

今回の目的

・GASに触れる、GASでGitHubを使ってみる
・APIを使ってみる

環境を作る

1. コード管理導入

今回コード管理にGitHubを使いたいのでGithubとGASを連携します。
参考:https://qiita.com/Massasquash/items/1ebb722272a114c62d79

拡張機能Google Apps Script GitHub アシスタントをインストール
https://chrome.google.com/webstore/detail/google-apps-script-github/lfjcgcmkmjjlieihflfhjopckgpelofo/related

ここでリモートリポジトリに対して操作できるようになります。
スクリーンショット 2020-11-14 103835.png

2. 体重記録用カレンダーの作成

体重記録用のカレンダーを新規作成しカレンダーのIDを取得します。
対象カレンダーの詳細から[設定と共有]>[カレンダーの設定]>カレンダーIDをコピー
スクリーンショット 2020-11-14 102313.png

Googleカレンダーの予定をLINEに送る

参考:https://qiita.com/ikei/items/8c837444dcab6c0e4629

1. APIの導入

LINE Notifyにログインして連携を行います。
ここで接続するグループを指定できます。

2. コード

GoogleカレンダーLinebot連携
function todayWeight() {
  var accessToken = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
  var cal = CalendarApp.getCalendarById('hogehoge@group.calendar.google.com');  
  var today = Utilities.formatDate(new Date(), 'JST', 'M/d');
  var weightData = getweight(cal);

  //LINEbotで通知
  var sendToLineMessage =
   {
     'method'  : 'post'
    ,'payload' : 'message=' + '\n' + today + 'の体重報告:' + weightData
    ,'headers' : {'Authorization' : 'Bearer '+ accessToken}
    ,muteHttpExceptions:true
   };
  UrlFetchApp.fetch('https://notify-api.line.me/api/notify', sendToLineMessage);
}

/**
* カレンダーからイベントを取得し体重データを返す
*/
function getweight(prmCal) {
  var strWeight = '';
  var arrWeight = prmCal.getEventsForDay(new Date());
  if ( _isNull(arrWeight) ) strWeight = '本日の記録がありません。';
     for (var i=0; i<arrWeight.length; i++) {
           strWeight += arrWeight[i].getTitle();
     }
  return strWeight;
}

/**
* NULL判定
*/
function _isNull(prm) {
  if ( prm=='' || prm===null || prm===undefined ) {
    return true;
  } else {
    return false;
  }
}

3.トリガーの設定

今回は毎日12時~1時にトレーナーとのグループに投稿されるようにします。
スクリーンショット 2020-11-14 104207.png

実際に動かしてみる

Googleカレンダーに体重を登録して、
スクリーンショット 2020-11-14 105204.png

実行してみると、無事LINEに送ってくれました。
スクリーンショット 2020-11-14 104732.png

まとめ

・LINE Notifyは便利!いろいろなことに使えそう
・こういうシステム作りたい私は、そもそもダイエットに向いてない

まだ最低限の機能だけどこれから機能追加して激やせ最強ダイエットツール開発するぞ~(クリームパラーメンとポテチ食べたいビール飲みたい)

9
1
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
9
1