LoginSignup
8
6

More than 5 years have passed since last update.

kibelaとSlackの連携にGASを噛ませてメンション化する方法

Last updated at Posted at 2018-05-14

通知をメンション化する

  • kibelaとSlackを連携させている(させたい)人向け
  • メンションが付いていると自分に必要な情報がピックアップしやすくなるのでおすすめです
  • 24時間稼働でも無料です
  • GAS使ったことない人、非エンジニアでも出来るように書いてます。

使うもの

GAS
google スプレッドシート(userIdの管理)

流れ

kibelaの発信webhook→GAS→Slackの着信webhook

コード

var postUrl = "{your slack incoming webhook url}";
var spreadSheetId = "{your spreadSheetId}";

// kibalaからのpostを受け取るメインfunction
function doPost(e){
  var body = JSON.parse(e.parameter.payload);
  var converted_body = get_mention(body); //メンション化
  e.parameter.payload = JSON.stringify(converted_body);
  postSlack(e);
}

function postSlack(e){
  var payload = JSON.parse(e.parameter.payload);
  payload['channel'] = e.parameter.group; //このGASの実行urlの最後尾に?group=slackChannelIdをつける

  var options = {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : JSON.stringify(payload)
  };
  UrlFetchApp.fetch(postUrl, options);

}

// メンバーシートを配列で取得
function getSlackMemberArray() {
  var memberSheet = SpreadsheetApp.openById(spreadSheetId);
  var arr = memberSheet.getSheetValues(1, 1, memberSheet.getLastRow(), memberSheet.getLastColumn());
  return arr;
}

// jsonの中身を修正
function get_mention(body){
  var slackMemberArray = getSlackMemberArray();
  for(var i in slackMemberArray){
    if(slackMemberArray[i][4]==""){

    }else{
      var kibelaId = new RegExp('@'+slackMemberArray[i][], 'g');
      body.attachments[0].text = body.attachments[0].text.replace(kibelaId, '<@'+slackMemberArray[i][0]+'> ');
    }
  }
  body.username = "your bot name";
  body.icon_url = "your bot icon url";
  return body;
}

1,2,43,44行目を変えてください。
44行目はコメントアウトしても大丈夫です。うちの会社ではアイドルが通知してくれてます笑

公開→ウェブアプリケーションとして導入
を忘れずに。

IDを管理するSpreadSheet

こんな感じです!
スクリーンショット 2018-05-22 15.10.04.png

8
6
2

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