LoginSignup
9
6

More than 5 years have passed since last update.

ひよっこが毎朝電話番を通知するSlackのbotをつくる_( _*°ヮ。)_

Last updated at Posted at 2017-07-27

経緯

  • 毎朝電話当番の通知を手動で書き込んでいるのをなんとかしたい!
  • botつくってみたい!!!!! ←本音

参考にさせて頂きました

GoogleAppsScriptからSlackに通知を送るスクリプト - ①
Slack APIのTokenの取得・場所
弊社猫会長に日直当番を任命していただくbotを作った

材料

  • slack
  • googleアカウント
  • ノリと勢い

作り方

1.GoogleDriveにスプレッドシートを作成

GoogleDriveを開いて右クリックでgoogleスプレッドシートを作成

2.スクリプトエディタを開いて上記リンクからソースコードコピペどーん

スプレッドシートのツール>スクリプトエディタを開く

3.上記リンクを参考にslackのtokenをゲットしてメモしておく

作りたいチャンネルの横のCreate Tokenボタンを押すと生成されるので忘れずにメモ等する

4.コピペして作成したスクリプトにtokenやらbotの名前やらをかいていく

(function(global){
  var Slack = (function() {
    function Slack(options){
      var options = options || {};
      this.url = options.url || "https://slack.com/api/chat.postMessage";
      this.token = options.token || "メモしたtoken";
      this.channel = options.channel || "#チャンネル名";
      this.username = options.username || "botの名前";
      this.icon_emoji = options.icon_emoji || "botのアイコン";
    }
  Slack.prototype.send =  function(text) {
    var self = this;
    UrlFetchApp.fetch(self.url, {
      "method" : "POST",
      "payload" : {
        token: self.token,
        channel: self.channel,
        username: self.username,
        icon_emoji: self.icon_emoji,
        text: text
      }
    });
  };
  return Slack;
 })();
  global.Slack = Slack;
})(this);

5.メインスクリプトを勢いで編集

function myFunction() {

  //平日のみ実行
  var currentDate = new Date();
  if (!isWeekDay(currentDate)) {
    return;
  }

  //祝日は実行しない
  if (isEventsForDay(currentDate)) {
    return;
  }

  var slack = new Slack();
  //Sheetとの接続
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A1:A6");
  var count = range.getNumRows();
  var members = range.getValues();
  var mainUser = members[0];
  var subUser = members[1];

  var msg = "本日の電話当番です。";
  slack.send(msg);
  msg = "メイン: " + mainUser;
  slack.send(msg);
  msg = "サブ: " + subUser;
  slack.send(msg);

  //先頭1人を後へ
  for(var i = 1; i < count; i++){
    range.getCell(i, 1).setValue(members[i]);
  }
    range.getCell(count, 1).setValue(mainUser);
}

6.トリガーを設定する

スクリプトエディタの上にある 編集>現在のプロジェクトのトリガー もしくは時計マークを押して作成しましょう。
設定は以下のようにしてます。

  • 実行したい関数名
  • 時間主導型
  • 日タイマー
  • 午前 9時〜10時

まとめ

GASを使うとかんたんなbotならひよっこな自分でもらくらく作成できましたので、ぜひぜひみなさんも作ってみてくださいね_( _*°ヮ。)_

追記

いつからかメンションの表記方法が変わったのでメモ
以前の表記方法は<@username>でメンションできましたが、
現在はユーザーごとに設定されているユニークなid(Uから始まる大文字英数字9文字)<@user_id>でなければメンションされません。
Slack Api user.listなどのテスターで確認しましょう。ヾ( ノシ*°ヮ。)ノシ
参考 -> SlackのAPI経由でのメンションの仕様変更(2018/9/12~)

9
6
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
9
6