コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

GASdeSlackBotメイクできるらしい

つくれるらしい

なんかふと某レッスンの眺めていたらネタ増えてたんでこれの話しします。というかやったという報告しかしない。
f:id:andron:20200513010413p:plain
丁度今旬の例のアレに関してのやつだったんで便乗してやってしまえと思ったのでした。まあ旬が過ぎたら持ってくるデータ変更すりゃいい話なんですけどね。


んで、なんでやろうかといえばGASって定時バッチみたいな使い方ぐらいしか用途ないなーって思っていたんですよ。けどもチャットボットもできるってことなのでちょっと気になったのでした。

やったこと

同じこと書いてもあれなんで、ざっくり書いておきます。

1. GASをWebアプリ化させる。
Web Apps  |  Apps Script  |  Google Developers
これ使っていく感じっぽい。

function doPost(e) {
  // Slack Event Subscription 認証用のレスポンス
  var params = JSON.parse(e.postData.getDataAsString());
  if (params.type == "url_verification") {
    return ContentService.createTextOutput(params.challenge);
  }  
  
  var texts = params.event.text.split(" ");
  // トリガとなる文字
  var matchText = "covid19"

  if (texts[0] == matchText) {
    // 感染状況データを取得
    // 取得情報
    // 年,月,日,都道府県,PCR検査陽性者数,PCR検査人数,陽性率,検査人数の集計期間に対応する陽性者数
    var url = "https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/prefectures-2.csv"
    var prefecturesCsv = UrlFetchApp.fetch(url).getContentText("UTF-8");
    var prefectures = Utilities.parseCsv(prefecturesCsv);
     
    // 全国のデータを取得
    var data = prefectures.filter(i => i[3] == texts[1] ).pop();
    if (data) {
      var message = `【${texts[1]}の新型コロナ感染状況】[${data[0]}\/${data[1]}\/${data[2]}] 陽性: ${data[4]}, 検査人数: ${data[5]}`;
    } else {
      var message = `データは見つかりませんでした`;
    }
  
   // Slack に送信
   var options = {
    "method" : "POST",
    "headers": {"Content-type": "application/json"},
    "payload" : '{"text":"' + message + '"}'
   };
   var webhookUrl = PropertiesService.getScriptProperties().getProperty('WebhookURL');
   UrlFetchApp.fetch(webhookUrl, options);  
  }
}

とりあえずWebhookのURLはコードに直書きしたくないのでスクリプトプロパティに入れておきます。
f:id:andron:20200513010010p:plain
「ファイル->プロジェクトのプロパティ」からいけるそうです。

取ってきたデータはこちら
GitHub - kaz-ogiwara/covid19: 新型コロナウイルス感染症(COVID-19)の国内における状況を厚生労働省の報道発表資料からビジュアルにまとめた。

スクリプトの方は「公開->ウェブアプリケーション」として導入で準備完了です。


2. Slackの情報を色々いじって……
Webhookだけだと、コメント投下できないので……。
Slack API | Slack


3. 完成
f:id:andron:20200513011311p:plain
こんなんできます。利用方法はcovid19 {都道府県}でとってきます。

こんなんやってたんで今が旬だと思って紹介してしまったのでした。無料期間終わるまでにもう少し色々手を出しておきたいからあんまりいじれてないけど内容はこんなんです。こんなんつくれるようになるんで気になったらいじってみよう。




感想

Bot制作で必要なものWebhookだった…。流れとしては、GASをAPI化 ->SlackのWebhook 使ってそこにそのままPOSTを乗せていくみたいな感じ(伝わらない)。僕が普段よく利用しているSNSってWebhook提供してないから応用利かせるのは難しそう。

Slack使えばワンチャンあるんだけど、僕はSlack使わないからね……。うーん。オンラインサロンでもはじめてみますかw。

まあいいや。


この騒動がいつ終わるかは知りませんが、収束したらDMMのAPIでも使えばまた色々と楽しめるかと思います。
トップ - DMM Web APIサービス
とりあえず今の色々手を出している状況が落ち着いてなんかネタ思いついたら上の改造コード載せるなどしていきたいと思います。