Skip to content

Instantly share code, notes, and snippets.

@K1-Style K1-Style/trainbot.gs
Last active Jan 28, 2017

Embed
What would you like to do?
LINE BOT で電車遅延検索お知らせ ref: http://qiita.com/k1_style/items/67e548959374e34ce751
// プロパティ取得(CHANNEL_IDとかSECRETとかは、GASのスクリプトプロパティで定義)
var PROPERTIES = PropertiesService.getScriptProperties();
// 鉄道遅延情報のjson
var URL = PROPERTIES.getProperty('JSON_URL');
// LINE情報
var LINE_CHANNEL_ID = PROPERTIES.getProperty('LINE_CHANNEL_ID');
var LINE_CHANNEL_SECRET = PROPERTIES.getProperty('LINE_CHANNEL_SECRET');
var LINE_MID = PROPERTIES.getProperty('LINE_MID');
var LINE_API_POST_URL = PROPERTIES.getProperty('LINE_API_POST_URL');
/**
* そのままアクセスした場合、IPアドレスを表示
*/
function doGet(e) {
return ContentService.createTextOutput(UrlFetchApp.fetch("http://ip-api.com/json"));
}
/**
* LINEからPOSTされた場合
*/
function doPost(request){
try{
var requestJson = JSON.parse(request.postData.contents);
var requestResult = requestJson.result;
for(var i = 0; i < requestResult.length; i++) {
// リクエスト投げたユーザー取得
var requestContent = requestResult[i].content;
var requestUserId = requestContent.from;
var requestText = requestContent.text;
// LINE送信のパラメータ
var payload =
{
"to" : [requestUserId],
"toChannel" : 1383378250,
"eventType" : "138311608800106203",
"content" : {
"contentType" : 1,
"toType" : 1,
"text" : getData(requestText)
}
};
// LINE送信のヘッダ情報
var headers = {
"Content-Type" : "application/json; charser=UTF-8",
"X-Line-ChannelID": LINE_CHANNEL_ID,
"X-Line-ChannelSecret": LINE_CHANNEL_SECRET,
"X-Line-Trusted-User-With-ACL": LINE_MID
}
//
var options =
{
"method" : "post",
"payload" : JSON.stringify(payload),
"headers" : headers
};
UrlFetchApp.fetch(LINE_API_POST_URL, options);
}
} catch(e) {
Logger.log(e);
}
}
/**
* 鉄道遅延情報取得
*/
function getJsonList() {
var response = UrlFetchApp.fetch(URL);
var json=JSON.parse(response.getContentText());
Logger.log(json);
return json;
}
/**
* 鉄道遅延情報を返すメッセージを生成し、返す
*/
function getData(searchText){
// 返す文字
var returnText = 'ご安心ください、' + searchText + 'は遅延なく運転しております';
//遅延情報を取得
var result = getJsonList();
//遅延情報を1つずつチェック
for(var i = 0; i < result.length; i++) {
var company = result[i].company; //会社
var name = result[i].name; //路線
var date = new Date(Number(result[i].lastupdate_gmt) * 1000); // 最終更新日時
var rg = new RegExp(searchText);
//調査対象路線に合致した場合、通知する
if (rg.test(name)) {
returnText = '申し訳ありません、' + name + '(' + company + ')' + '遅延しております(最終更新日時:' + [date.getFullYear(),date.getMonth() + 1,date.getDate()].join( '/' ) + ' ' + date.toLocaleTimeString() + '';
}
}
Logger.log(returnText);
return returnText;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.