Googleカレンダの今日の予定を新垣結衣に毎朝届けてもらうSlackのBot
昨年Googleとの連携が強化され様々な機能が追加されたslack。私個人もGoogleカレンダーを連携させ、スケジュールを把握していたのですが、機械的すぎてちょっと味気ないな…と思い、せっかくなので新垣結衣ちゃんにスケジュールを届けてもらう秘書っぽいBotは出来ないかとググったらすでに実践されてる方が!ということで「ほぼコピペ」で出来るslackBotの作成手順を備忘録としてエントリ。興味のある方は参考にしてください。
1.Webhookを取得
2. GoogleカレンダーのIDを取得
3. GAS(Google Apps Script)を作成
function morningCall() {
var list = "";
var s;
// ↓↓↓↓↓ カレンダーIDを入力 ↓↓↓↓↓
s = listupEvent("xxxx@gmail.com");
if (s != "") list += "\n■本日の予定\n" + s;
Logger.log(list);
if (list != "") {
var payload = {
// ↓↓↓↓↓ 任意のコメントを入力 ↓↓↓↓↓
"text" : "おはようございます、新垣です。\n本日の予定をお知らせします。\n" + list + "\n今日も一日、がんばりましょう!",
// ↓↓↓↓↓ 通知したいチャンネル名を入力 ↓↓↓↓↓
"channel" : "#xxxxxxxx",
"username" : "新垣結衣",
// ↓↓↓↓↓ アイコン画像のリンクURLを入力 ↓↓↓↓↓
"icon_url" : "http://xxxx.com/xxxx.jpg"
}
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 = "";
if (events[i].isAllDayEvent()) {
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","MM/dd ");
} else {
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","MM/dd HH:mm");
s += Utilities.formatDate(events[i].getEndTime(), "GMT+0900","-HH:mm ");
}
s += events[i].getTitle();
Logger.log(s);
list += s + "\n";
}
return list;
}
function postSlack(payload)
{
var options = {
"method" : "POST",
"payload" : JSON.stringify(payload)
}
// ↓↓↓↓↓ Webhook URLを入力 ↓↓↓↓↓
var url = "https://hooks.slack.com/services/xxxx/xxxx/xxxxxxxx";
var response = UrlFetchApp.fetch(url, options);
var content = response.getContentText("UTF-8");
}
▼参考にさせていただいたサイト
→ Googleカレンダーの内容をSlackに投稿する
→ 【祝】麻生久美子が秘書になりました【ただしSlackのBot】
これで味気ない一日のスケジュール通知に潤いを与えました。数日使ってみた印象としては悪くない感じです。というより結構いい感じ。
個人的にslackはチャットツールというよりも、外部連携で収集した情報を集約・閲覧・確認するハブ的なサービスだと思っています。Iot連携なども今後強化されていくと思いますので、ますます目の話せないサービスとなりそうですね。