【Google Apps Script】DiscordのWebhookを使って行動を習慣化する
690 語
3 分
【Google Apps Script】DiscordのWebhookを使って行動を習慣化する
はじまり

135ml
ああ、痛てて・・・

リサちゃん
おう、おかえり。歯医者はどうだったよい?

135ml
今回は治療しなかったねえ。なんか、この前治したところがまだ痛かったから行ったんだが、どうやら、この虫歯の根本的な原因は、噛み合わせが悪い状態で食事の時以外にも歯を閉じていることなんじゃないか? みたいなことを医者に言われたわ

リサちゃん
じゃあ、普段から歯を開きっぱなしにするように意識しなきゃいけないってことだね

135ml
そうだな、新しい行動を習慣にするために意識付けなきゃならない。そうと分かれば・・・

リサちゃん
うん?

135ml
通知ツールを作るか

リサちゃん
おおっ?
ツールの概要
今回は、DiscordのWebhookを使って、2時間おきにDiscordのチャンネルに通知するツールを作ります。 主な機能は、
- GASで時間主導型で動く関数を用意する
- その関数内で、指定した時間外の場合、通知しないようにする
- 時間内であれば、Discordチャンネルに通知する
- 通知する内容は、習慣化する行動と、意識できているかどうかを記録するシートのURL。
例えば、こんなのが送られてきて、

そこにあるシートのURLをタップして、シートに記入する感じです。

GASで時間主導型で動く関数を用意する
まずは、適当に関数を用意して、それが◯時間おきとかに作動するようにしましょう。

その関数内で、指定した時間外の場合、通知しないようにする
そして、寝ている間にこの意識付けの通知が送られてくるのは億劫なので、 通知が送られないようにする時間帯を設定します。以下の場合だと、AM3:00〜AM9:59の間は通知されてきませんね。
/** * @description Getting notification to send webhook requests. * @param {string} sheetName * @return {string[] || bool}*/function addRow(sheetName){ let today = new Date(); const hour = today.getHours(); const overtimeStart = 3; const overtimeEnd = 10; if(hour >= overtimeStart && hour < overtimeEnd){ return false; }
const numColumns = 5; let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); let newRow = sheet.getLastRow() + 1; let range = sheet.getRange(newRow, 1, 1, numColumns); let newValues = [ [ newRow - 1 , today , today , "" , "" ] ]; range.setValues(newValues); return newValues;}時間内であれば、Discordチャンネルに通知する
上記の場合であれば、AM3:00〜AM9:59ではない場合に、Discordに通知を飛ばしたいと思います。 使用するDiscordのチャンネルを作ったりして、チャンネル設定でWebhookを作成しましょう。
通知する内容は、習慣化する行動と、意識できているかどうかを記録するシートのURL。
送る内容はこんな感じにします。 最初に習慣化する行動を書いて、その次に、記録用のシートのURLを埋め込みます。フッターにはGoogleスプシのロゴを入れてみたり。
/** * @description Getting notification to send webhook requests. * @return {string{}}*/function createHabitNotification(){ const bucketUrl = URL_OF_STORAGE_FOR_WEBLIP; const folderOfImage = IMAGE_FOLDER_FOR_SERVICES; let imageFolderUrl = `${bucketUrl}/${folderOfImage}`;
let content = "歯を開いて!"; let urlOfSheet = URL_OF_SHEET; iconUrl = `${imageFolderUrl}/${IMAGE_FILE_FOR_SPREADSHEET}`; let embeds = []; embeds.push({ "title": "シートに記入!" , "color": 4569935 , "url": urlOfSheet , "footer": { "text": "GoogleSpreadsheet" , "icon_url": iconUrl } })
let returnEmbeds = embeds; console.log(returnEmbeds);
const payload = { "username": "歯を開かせるあゆ" , "content": content , "embeds": returnEmbeds // , "tts": true
console.log(payload);
return payload;}
以上です!
おしまい

リサちゃん
うわ、通知されてきた!

135ml
DiscordのWebhookを使ったツールは、これで、ちゃんと行動が定着するかどうかを記録して習慣化していこう。

リサちゃん
他にも何か作れないかなあ
以上になります!
記事を共有
この記事が役に立ったなら、ぜひ他の人と共有してください!
【Google Apps Script】DiscordのWebhookを使って行動を習慣化する
https://endorphinbath.com/posts/gas-discord-webhook-habit/ 関連記事 スマート
1
【Google Apps Script】DiscordのWebhookを使って毎朝天気を通知する(Discord Bot改良:第1回)
Code DiscordのWebhookをGoogle Apps Scriptで叩いて、天気を通知するツールを作りました。
2
【Python】Pycordでボットの機能を増やした(Discord Bot改良:第2回)
Code 以前にRenderでビルドしていたDiscordのボットを刷新していきます。pycordを使って、スラッシュコマンドの実装、オートコンプリートの適用などを行いました。
3
【Google Apps Script】自分がGASで使うIDとかトークンを1つのシートで管理するライブラリを作ろうとしたけど、断念した話
Code Google Apps Scriptで使うフォルダIDやスプレッドシートIDなどを一括管理するライブラリをスプレッドシート上で作ろうと思ったのですが、とある理由により頓挫しました。貴方もお気を付け下さい。
4
【GAS】Googleカレンダーに曜日を指定してスケジュールを登録するスプレッドシートの構築
Code Google Apps Scriptを使い、スプレッドシートからGoogleカレンダーに曜日指定でスケジュールを追加するシステムを作りました。繰り返し入力する版と個別に入力する版があります。
5
【Google Apps Script】onOpen時に「Spreadsheet.openByIdを呼び出す権限がありません」となり、メニューが追加されない
Code onOpenなどのSImple Triggerを使ったスクリプト実行時に、「Spreadsheet.openByIdを呼び出す権限がありません」みたいな権限エラーが発生した時に試したことを紹介します。
ランダム記事 ランダム