// 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
});
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.