LoginSignup
4
11

More than 5 years have passed since last update.

GASでWikipediaの情報を取得するSlack Botを作った

Last updated at Posted at 2017-01-28

GASでwikiの情報を取得するSlack Botを作りました。

wiki ○○○

にて、Wikipediaの情報を表示します。

Slack_wiki.png

Wikipediaの情報は、以下のAPIを利用させていただきました。感謝。
http://wikipedia.simpleapi.net/

組み込み利用にあたっては、なるべく1分あたり30リクエスト以下でお願いします

とのことですので、注意して利用してください。

以下を参考にさせていただきました。
https://tech.camph.net/slack-bot-with-gas/
http://qiita.com/soundTricker/items/43267609a870fc9c7453
ありがとうございました。

とりあえずソースだけあげておきます。
上記をみれば、設定方法がわかると思います。

wiki.js

var OUTGOING_TOKEN       = PropertiesService.getScriptProperties().getProperty('OUTGOING_TOKEN');
var BOT_ICON             = PropertiesService.getScriptProperties().getProperty('BOT_ICON');
var BOT_NAME             = "wiki";

function doPost(e) {
  var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
  if(OUTGOING_TOKEN != e.parameter.token && e.parameter.trigger_word == 'wiki'){
     return;
  }    

  var app = SlackApp.create(token);
  var params = e.parameter.text.match(/^wiki (.*)/);

  if(params == null) return;

  var word = params[1].replace(/(^\s+)|(\s+$)/g, "");

  var url = "https://ja.wikipedia.org/wiki/" + word ;
  var message = "";
  message += url + "\n";
  message += getWikiData(word);

  return app.postMessage(e.parameter.channel_id, message , {
    username: BOT_NAME,
    icon_url: BOT_ICON
  });
}

function getWikiData(keyword) {
    var url = "http://wikipedia.simpleapi.net/api?keyword="+ keyword +"&output=json";

    // JSONデータを取得
    var json = UrlFetchApp.fetch(url).getContentText();
    var jsonData = JSON.parse(json);

  if(jsonData == null){
    return "存在しませんでした。";
  }else if(jsonData[0] == null){
    return "存在しませんでした。";
  }else if(jsonData[0]["body"] == null){
    return "存在しませんでした。";
  }else{
    return jsonData[0]["body"];
  }

}




4
11
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
4
11