// Google Apps Script 
function doPost(e) {
  // スクリプトのプロパティから各tokenを取得
  var prop = PropertiesService.getScriptProperties().getProperties();
  var bot_name = "ゴゴ号"; // Botの名前
  var bot_icon = "https://drive.google.com/uc?export=view&id=xxxxx-xxxxxxxxxx"; // Botのアイコン

  // tokenが一致しなかったらエラー
  if (prop.VERIFY_TOKEN != e.parameter.token) {
    throw new Error("invalid token.");
  }

  /* 帰ってくる値はこんな感じ
  token=5oz5Ei0XJcGvZznPJUDnbctoken=5oz5Ei0XJcGvZznPJUDnbcyy
  team_id=T0001
  team_domain=example
  channel_id=C2147483705
  channel_name=test
  timestamp=1355517523.000005
  user_id=U2147483697
  user_name=Steve
  text=googlebot: What is the air-speed velocity of an unladen swallow?
  trigger_word=googlebot:
  */

  var app = SlackApp.create(prop.SLACK_ACCESS_TOKEN);

  // デフォルトのリアクション
  var message = "@" + e.parameter.user_name + " " + "あい"; 

  var text = e.parameter.text; // 発言を取得
  var channel = e.parameter.channel_id; // Channnelを取得

  // 記念日
  if(text.match(/記念/) || text.match(/きねん/) || text.match(/kinen/)){
    // スプレッドシートを指定
    var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0');
    var sheet = ss.getSheets()[0]; // シートを指定(左から0、1、2...)
    var sheetdata = sheet.getSheetValues(1,1,1,1); // 取得するセルの範囲を指定(A1だけ取得)
    var message = "@" + e.parameter.user_name + " " + sheetdata[0][0]; // 取得するセルを指定(0から[行][列])
  }

  // ゴミの日
  if(text.match(/ゴミ/) || text.match(/ごみ/) || text.match(/gomi/)){
    var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0');
    var sheet = ss.getSheets()[1];
    var sheetdata = sheet.getSheetValues(1,1,1,1); 
    var message = "@" + e.parameter.user_name + " " + sheetdata[0][0];
  }

  // ごはん
  if(text.match(/ごはん/) || text.match(/ゴハン/) || text.match(/gohan/)){
    var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0');
    var sheet = ss.getSheets()[2];
    var sheetdata = sheet.getSheetValues(1,1,sheet.getLastRow(),1); // A1:A1000までを取得
    var num = sheetdata[0][1]; // counta関数で取得したデータの総数を取得
    var rand = Math.floor(Math.random()*num); // 0~総数でランダムな値を取得
    var message = "@" + e.parameter.user_name + " " + sheetdata[rand][0]; // A列の値をランダムに取得
  }

  // 天気予報
  if(text.match(/てんき/) || text.match(/テンキ/) || text.match(/tenki/) || text.match(/天気/)){
    var weather = UrlFetchApp.fetch("http://weather.livedoor.com/forecast/webservice/json/v1?city=1320300"); // 東京武蔵野市

    // エラーだったら処理を終了
    if(weather.getResponseCode() != 200){
      return false;
    }

    var json = JSON.parse(weather.getContentText());
    var today = json["forecasts"][0]["telop"]; // 今日の天気
    var tomorrow = json["forecasts"][1]["telop"]; // 明日の天気
    var message = "@" + e.parameter.user_name + " 今日は「" + today + "」。明日は「" + tomorrow + "」やで~";
  }

  // messageをSlackに投稿
  return app.postMessage(channel, message, {
    username: bot_name,
    icon_url: bot_icon
  });
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.