イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです


このエントリーをはてなブックマークに追加

Trello APIとSlackとGASとRaspberryPiを使ってみたお話。

みなさまこんばんはこへです。
暑くなってきまして、そろそろTrello APIやラズパイやGASを使って何かしたい時期が来ましたので触ってみました。

イメージ

trello blog6.png?

残タスク通知をGASでやるぜ

trello blog5.png?

↑の今日やることリストに入っているカードを毎日18時にSlackに通知する。

※事前にTrelloApiのkeyとtoken、リストのidを取得しておく。

function checkTrello() {

  var trelloKey   = "###TRELLOKEY###";
  var trelloToken = "###TRELLOTOKEN###";
  var listId  = "###LISTID###";

  var api = "https://trello.com/1/lists/" + listId + "/cards?key=" + trelloKey + "&token=" + trelloToken;
  var response = UrlFetchApp.fetch(api, {'method':'get'});
  var json = JSON.parse(response.getContentText());


  var date = new Date()
  date.setDate(date.getDate())
  var today = Utilities.formatDate(date, 'Asia/Tokyo' , 'YYYY-MM-dd');

  var sendData = [];
  var max = json.length;
  for(var i = 0; i < max; ++i){
    var due  = json[i].due;
    var name = json[i].name;
    name = name.replace(/\s+/g, "");
     postMessage(name);
  }
 }



function postMessage(msg) {
  var token = ###TOKEN###;
  var channel = ###Channel名###; //投稿先チャンネル名
  var username = "trello残タスクbot"; //BOTの名前
  var text = msg; //メッセージ
  var toUser = "kohe";

  //Channelにおくりたい場合はこっち
  //   UrlFetchApp.fetch("https://slack.com/api/chat.postMessage?token=" + token + "&channel=%23" + channel + "&username=" + username + "&text=" + text);
  UrlFetchApp.fetch("https://slack.com/api/chat.postMessage?token=" + token + "&channel=%40" + toUser + "&username=" + username + "&text=" + text);
}

コードはこ~んな感じ。

早速 checkTrelloメソッドを実行

trello blog4.png?

いい感じにTrello残タスクBotがリマインドしてくれる。

後はGASの設定で毎日18時にスクリプトが起動するように設定するだけ。
サーバも準備することなくなんと楽なことか…。 ただ、GASのエディターはvimのキーバイドに対応してないことだけが惜しいところ。

Raspberry Piを使ってSlackからTrelloにカードを追加や

todo あいうえおとSlackに打ったらTrelloのリストにあいうえおという名前のカードを追加したい。

trello blog2.jpg?

↑最近買ったらずぱいちゃん。

Raspberry PiとHubotの設定などは私の同期が記事を書いていたのでそれを参考に設定。
※ 何故か色々うまく動かなかったりしてハマりましたが、プロセスをkillしまくったり、色々再インストールしたりしたら上手くできやした。
http://tech.innovation.co.jp/2017/06/23/Making-Bot-with-Raspberry-Pi-and-Phantom-J-S.html

CoffeeScriptをvimで書いていく。

 module.exports = (robot) ->
   robot.hear /todo (.*)/i, (msg) ->
     keyword = encodeURIComponent msg.match[1]
     user    = msg.message.user.name
     if user == "kohe"
       @exec   = require('child_process').exec
       command = "curl -X post 'https://trello.com/1/cards?key=###LISTKEY###&token=###SKACKTOKEN###&name=" + keyword + "'"
       @exec command, (error, stdout, stderr) ->
         msg.send stdout
     else
       msg.send "承認されているユーザではありません"

自分以外のユーザが todo ~と送っても反応しないように設定。

早速実行!

trello blog1.gif
trello blog3.png?

追加されてる!うれc

おわり