1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初めてSlackでBotを作ったので流れを書いておく

Posted at

##発端
よく「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に応援されたかった。
・正しくゴミの日登録して前日に調べて「明日です!」と通知するのできるはずだよなーと思いつつ諦めてしまった。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?