エンジニア

2016.02.12

GoogleAppsScriptでJAWS-UGのイベント通知をSlackに流してみた

GoogleAppsScriptでJAWS-UGのイベント通知をSlackに流してみた

頑張って、どんどん、書きます!!!
都会に憧れるエンジニア
ハンズラボの吉田です。
アイキャッチ画像は家の近くの山です。これの麓辺りから出勤しています。
杉山なので春先は地獄です。春が、近い・・・(恐怖


前回に引き続きSlackネタで書いていこうと思います。
前回はLambda(Python2.7)からSlackへの通知を行いました。
今回は、GoogleAppsScript(以下GAS)からSlackをぶっ叩きます!

感想

JavaScriptむずかしぃぃぃぃ!

慣れですね。頑張ります。
今回作ったBOTはJAWS-UGのイベントが登録されたらSlackにつぶやくBOTです
こんな感じ
bot-test___2016_e_d_team_Slack
それでは作り方を見ていきましょう。

事前準備(StudyMail)

勉強会情報ですが、Study Mail IT勉強会自動チェックサービスを使用してGmailで勉強会情報をチェックしています。
このサービス速報性が高いのでオススメです!
勉強会って行こうと思っても定員オーバーってよくありますよね?
このサービスでチェックしていると結構定員に勝てたりします(´ω`)
このサービスについては特に説明するほどの設定も無いため省略します。

事前準備(GMail)

受信専用のアカウント作っても良いかとは思いますが、自分はいつも使ってるアカウントなのでStudyMailのJAWS-UGイベントをフィルター処理しておきます。

  • StudyMail且つJAWS-UGに関係あるメールだけをフィルターする
  • Slackに通知するのはその中でも未読メールのみ
  • 通知したら既読になるようにする

やりたいことはこんな感じです。

やってみた

早速ですが完成品がこちら

WEB_HOOK_URL = "https://hooks.slack.com/services/**********";
SLACK_USER_NAME = "ghost-bot";
SLACK_ICON = ":ghost:";
function postslack(MESSAGE){
  var payload = {
    "username" : SLACK_USER_NAME,
    "icon_emoji" : SLACK_ICON,
    "attachments": [
        {
            "text": MESSAGE,
        }
    ]
}
  var options = {
    "method" : "POST",
    "payload" : JSON.stringify(payload)
  }
  UrlFetchApp.fetch(WEB_HOCK_URL, options)
}
function myFunction() {
  var threads = GmailApp.search('label:jaws−ug-studymail label:unread')
    for(i = 0; i < threads.length; i++){
      var mailObject = threads[i].getMessages()[0]
      var content = mailObject.getRawContent()
      var mainTexts = content.split("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
      var spritPoint = mainTexts[1].indexOf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
      var Massage = mainTexts[1].slice(0, spritPoint)
      var url = Massage.split("■詳細はこちらから↓")[1]
      var subject = mailObject.getSubject().split("]")
      var Tittle = subject[1];
      var postMassage = "JAWS-UGの新しいイベントが登録されました!\n" + Tittle + "\n" + url
         postslack(postMassage)
         mailObject.markRead()
    }
}

ハマりポイントとしては、StudyMailからのメールがHTML形式で飛んでくるため、どうやって情報をパースするか
でした。
ものすっごい無理やりやっていますが、自動送信で送られてきているメッセージなので決め打ちで抜き取ってもいいかなーという判断です。   
慣れてきたらカッコいい(美しい)コードが書けるようになりたいものです・・・
弊社にはJAWS-UG界隈の有名人が居ますので、こういったものが役に立てば、見ている皆さんの役に立てばいいなーと思い、作ってみました。
参考
https://api.slack.com/custom-integrations
https://api.slack.com/incoming-webhooks
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)

一覧に戻る