【Google Apps Script】DiscordのWebhookを使って行動を習慣化する

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

はじまり#

135ml avatar
135ml
ああ、痛てて・・・
リサちゃん avatar
リサちゃん
おう、おかえり。歯医者はどうだったよい?
135ml avatar
135ml
今回は治療しなかったねえ。なんか、この前治したところがまだ痛かったから行ったんだが、どうやら、この虫歯の根本的な原因は、噛み合わせが悪い状態で食事の時以外にも歯を閉じていることなんじゃないか? みたいなことを医者に言われたわ
リサちゃん avatar
リサちゃん
じゃあ、普段から歯を開きっぱなしにするように意識しなきゃいけないってことだね
135ml avatar
135ml
そうだな、新しい行動を習慣にするために意識付けなきゃならない。そうと分かれば・・・
リサちゃん avatar
リサちゃん
うん?
135ml avatar
135ml
通知ツールを作るか
リサちゃん avatar
リサちゃん
おおっ?

ツールの概要#

今回は、DiscordのWebhookを使って、2時間おきにDiscordのチャンネルに通知するツールを作ります。 主な機能は、

  1. GASで時間主導型で動く関数を用意する
  2. その関数内で、指定した時間外の場合、通知しないようにする
  3. 時間内であれば、Discordチャンネルに通知する
  4. 通知する内容は、習慣化する行動と、意識できているかどうかを記録するシートの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;
}

以上です!

おしまい#

リサちゃん avatar
リサちゃん
うわ、通知されてきた!
135ml avatar
135ml
DiscordのWebhookを使ったツールは、これで、ちゃんと行動が定着するかどうかを記録して習慣化していこう。
リサちゃん avatar
リサちゃん
他にも何か作れないかなあ

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【Google Apps Script】DiscordのWebhookを使って行動を習慣化する
https://endorphinbath.com/posts/gas-discord-webhook-habit/
著者
kinkinbeer135ml
公開日
2023-07-10
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
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を呼び出す権限がありません」みたいな権限エラーが発生した時に試したことを紹介します。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次