ひとメモ

主にプログラミングのメモ

呼吸が浅くなりがちなのでMi Band3に深呼吸を促すリマインダが来るようにした

先日XiaomiのMi Band3を買いました。

www.hitowaft.work
スマホとBluetoothで接続して、LINEやTwitter、その他様々なアプリからの通知を確認することができます。

1時間座りっぱなしでいると「動きましょう」と通知してくれる機能は元々あるのですが、せっかくなのでもっと自分向けの通知を作って受け取ってみたいと思います。

使ったもの

手順

  1. LINE Notifyに登録してアクセストークンを取得する
  2. GASに後ほど記載のコードを貼り付けて、文言を好きに編集する
  3. GASでスクリプトのプロパティにACCESS_TOKENを登録する(省略可・後述)
  4. GASのトリガーをセットして、お好みの間隔で通知を受け取る

LINE Notifyのアクセストークン取得時の注意事項

LINE Notifyのアクセストークンを取得する際は、トークン名を一文字にしておきます。名前が長くなると、その分文言が入るスペースがなくなってしまうので…。

また、LINEのグループを作成してそこにLINE Notifyを招待し通知を受け取るやり方もあるのですが、そうすると[グループ名][LINE Notify]文言という形で通知が来て、ほぼ画面が埋まってしまうため1:1でLINE Notifyから通知を受け取るを選択します。

コード

function myFunction() {
  var messages = ["深呼吸しよう", "背筋を伸ばそう", "hoge", "fuga", "foo", "bar"];
  var random_num = Math.floor( Math.random() * messages.length );
  sendHttpPost(messages[random_num])
}


function sendHttpPost(message){
  token = PropertiesService.getScriptProperties().getProperty("ACCESS_TOKEN")

  var options =
   {
     "method"  : "post",
     "payload" : "message=" + message,
     "headers" : {"Authorization" : "Bearer "+ token}

   };

   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

コード解説

特に難しいことはしてませんが、JSやGASに不慣れな人に向けて少し解説します。
messages変数に通知したい文言を配列として入れています。
この配列の中から、実行ごとにランダムで一つ選ばれた文言がトリガーで決めた間隔で通知されます。

各文言を、全角なら13文字・半角なら34文字までに抑えると画面からはみ出しません。

token = PropertiesService.getScriptProperties().getProperty("ACCESS_TOKEN")の部分では、GASでスクリプトのプロパティに登録した値を取りにいってます。
どこにも公開しないならtoken = "LINE Notifyで取得したトークン"みたいにベタ書きでもいいかな。

動かないなと思ったら上部にある関数を選択からmyFunctionを選んで実行してください。


こんな感じで通知が来ます。
[良]となってるのが、トークン取得時につけた名前です。何かいい意味の漢字が良いなと思ったけど、特に思いつかなったのでそのまま良にしました。

参考リンク

Google Apps ScriptからLINE NotifyでLINEにメッセージを送る - Qiita

【超便利&お手軽】Python + LINE NotifyでLINEメッセージ送信 – Blue-black.ink