##発端
よく「Slackを使って家事を楽にする」という記事をよく見るので、
日々の生活を少しでも楽にしようと思い、この度Slackを始めました。
そこで最初に取り組んだのが、「明日○○のゴミの日だよ」と通知するBotの作成です。
大多数の人は普通にできてしまうと思いますが、自分用のメモとして覚えているうちに流れを書きます。
覚書なのもあり間違いもあると思います。初めての投稿です。よろしくお願いします。
##流れ
1.Slack apiで作業
2.Incoming WeWbhookをインストール
3.googleドライブでスプレッドシートを開いてプログラムを書く
####1.Slack api
・「Create New App」を押してアプリ名入力・ワークスペース選択で作成
・「Add Bot User」があると聞いたんですがありませんでした!!
・「https://api.slack.com/docs/oauth 」をひたすら読んだんですが、今見たらBasic Infomationに全部書いてあるんですね。
・「permission pcorpe」を行う
・Googleカレンダーを見て「明日だよ!」と言うためにはsendだけで十分みたいです。
・IPアドレス、リダイレクトURLはそれぞれ参考にしたものの通りにしましたが、よく分かっていません!!
・「Install App」が緑になるので押す。slack上にbotが出てくる。
・参考:「dkrkのブログ Slack APIでbotを作る1: 設定編」
####2.Incoming WeWbhook
・参考:[「Slack Bot:毎朝Googleカレンダーの予定を通知してくる秘書ねこBotの作り方」]
(https://designmemo.jp/creative/bot-googlecalendar-slack.html)
↑コードもほぼこの通りに書かせていただきました。ありがとうございます。
・Webhook URLを控えておく。
####3.スクリプトエディタ編集
function myFunction() {
var list = "";
var s;
s = listupEvent("***.google.com"); // a.GoogleカレンダーのID
if (s != "") list += "\n■ゴミを出そう!\n" + s; // b.メッセージの見出し
Logger.log(list);
if (list != "") {
var payload = {
"text" : "こんばんは。明日は、" + list + "を捨てる日だよ。", // c.メッセージの本文
"channel" : "#ゴミの日", // d.チャンネルの指定
"username" : "***bot", // f.Botの名前
}
postSlack(payload);
}
}
function listupEvent(cal_id)
{
var list = "";
var cal = CalendarApp.getCalendarById(cal_id);
var events = cal.getEventsForDay(new Date());
for(var i=0; i < events.length; i++){
s = "";
s += events[i].getTitle();
Logger.log(s);
list += s + "\n";
}
return list;
}
function postSlack(payload)
{
var options = {
"method" : "POST",
"payload" : JSON.stringify(payload)
}
var url = "https://****"; // g. Webhook URL
var response = UrlFetchApp.fetch(url, options);
var content = response.getContentText("UTF-8");
}
・前日夜通知されたかったので、水曜がゴミの日の場合火曜に予定を入れ、予定の設定日が表示されると混乱するため削った。だけであとはコピペです。
・Webhook URL,Googleカレンダーと連携するならカレンダーのIDが必要。
・編集→トリガーの設定で「毎日午後7~8時」とかに設定する。
完成したらGoogleカレンダーに予定入れて実行してみる。
自分が最初間違えていたのは
・bot名が「○○bot」なのに「○○Bot」にしてた
・GoogleカレンダーのIDではなくgmailのメールアドレスを書いてしまった
##やってみた感想
・プログラムの意味を全て理解できていないので、Botができることを増やしていく過程で分かるようにする。
・作っているうちに、Googleカレンダー連携で直接通知する方が楽では?と思ったけどBotに応援されたかった。
・正しくゴミの日登録して前日に調べて「明日です!」と通知するのできるはずだよなーと思いつつ諦めてしまった。