はじまり
ああ、痛てて・・・
おう、おかえり
歯医者はどうだったよい?
今回は治療しなかったねえ。
なんか、この前治したところがまだ痛かったから行ったんだが、
どうやら、この虫歯の根本的な原因は、噛み合わせが悪い状態で
食事の時以外にも歯を閉じていることなんじゃないか?
みたいなことを医者に言われたわ
じゃあ、普段から歯を開きっぱなしにするように意識しなきゃ
いけないってことだね
そうだな、新しい行動を習慣にするために意識付けなきゃならない
そうと分かれば・・・
うん?
通知ツールを作るか
おおっ。
ツールの概要
今回は、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;
}
以上です!
おしまい
うわ、通知されてきた!
DiscordのWebhookを使ったツールは、
これで、ちゃんと行動が定着するかどうかを記録して習慣化していこう。
他にも何か作れないかなあ
以上になります!
コメント