【GoogleAppsScript】 【Slack】 기차 지연 정보 post
3730 단어 bot초보자GoogleAppsScriptgas슬랙
Slack에 지연 정보를 게시하는 bot를 만들려고했습니다.
하고 싶은 일
GoogleAppsScript에서,
간토의 기차 지연 정보를 매일 아침 Slack에 게시
완성 시스템
슬랙 설정
1. 채널 만들기
2. Incoming WebHooks에서 Webhook URL 만들기
Browse Apps -> Custom Integrations -> Incoming WebHooks -> Edit configuration
설정 예:
슬랙 설정
1. 채널 만들기
2. Incoming WebHooks에서 Webhook URL 만들기
Browse Apps -> Custom Integrations -> Incoming WebHooks -> Edit configuration
설정 예:
GoogleAppScript
지정한 URL의 태그의 요소를 취득해, 성형해 Slack에 post 시키는 처리
function slackpost() {
try{
// 日付取得、フォーマット整形
var currentDate = new Date();
var weekday = currentDate.getDay();
var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
// 祝日は実行させない
if (weekday == 0 || weekday == 6) {
return;
}
var calendar = CalendarApp.getCalendarById('ja.japanese#[email protected]');
if (calendar.getEventsForDay(currentDate, {max: 1}).length > 0) {
return;
}
// URLから要素を指定し、タグ要素を取得する
var yahoo = "https://transit.yahoo.co.jp/traininfo/area/4/";
var response = UrlFetchApp.fetch(yahoo);
var myRegexp_line = /<div class="elmTblLstLine trouble">([\s\S]*?)<\/div>/i;
var line_html = myRegexp_line.exec(response.getContentText());
var line_list = line_html[1];
// 文字の整形
// replaceでline_listをゴリゴリ整形し変数、lineに...(もっと綺麗に書きたかった。。)
var line_base = line_list.replace(/\n|(運転状況|列車遅延|路線|詳細)|<td><span.*<\/td>|<.?th>|<tr>|<.?table>/g, "");
var line_top_del = line_base.replace("状況", "");
var line_td_del_1 = line_top_del.replace(/<td>/g, "\n");
var line_span_del = line_td_del_1.replace(/<\/span>|<\/a>/g, "");
var line_a_del = line_span_del.replace(/<a href=".*\/">/g,"");
var line_td_del_2 = line_a_del.replace(/<\/td>/g, "\n" );
var line = line_td_del_2.replace(/<\/tr>/g, "━─━─━─━─━─━─━─━");
if(line !== '事故・遅延情報はありません'){
// slackに投稿
function postMessage(message, hookPoint){
var payload = {
"text": message,
"channelId": '#information',
"userName": 'train-info',
"icon_emoji": ':train:'
}
var options = {
"method": "POST",
"payload": JSON.stringify(payload),
"headers": {
"Content-type": "application/json",
}
}
var response = UrlFetchApp.fetch(hookPoint, options);
if (response.getResponseCode() == 200) {
return response;
}
return false;
}
postMessage("\n" + "◆関東遅延情報 " + date + "\n" + yahoo + "\n" + line,'メモしたWebhookURL');
}else{
postMessage("\n" + "◆関東遅延情報 " + date + "\n" + "○ 事故・遅延情報はありません。" + "\n"+ yahoo,'メモしたWebhookURL');
}
}catch(e){
result = "エラーの内容:" + e;
Logger.log(result);
postMessage("◆Script実行エラーです。");
}
}
트리거 세트
Reference
이 문제에 관하여(【GoogleAppsScript】 【Slack】 기차 지연 정보 post), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/H_Neco/items/937ecde84bde9c1c1710
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function slackpost() {
try{
// 日付取得、フォーマット整形
var currentDate = new Date();
var weekday = currentDate.getDay();
var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
// 祝日は実行させない
if (weekday == 0 || weekday == 6) {
return;
}
var calendar = CalendarApp.getCalendarById('ja.japanese#[email protected]');
if (calendar.getEventsForDay(currentDate, {max: 1}).length > 0) {
return;
}
// URLから要素を指定し、タグ要素を取得する
var yahoo = "https://transit.yahoo.co.jp/traininfo/area/4/";
var response = UrlFetchApp.fetch(yahoo);
var myRegexp_line = /<div class="elmTblLstLine trouble">([\s\S]*?)<\/div>/i;
var line_html = myRegexp_line.exec(response.getContentText());
var line_list = line_html[1];
// 文字の整形
// replaceでline_listをゴリゴリ整形し変数、lineに...(もっと綺麗に書きたかった。。)
var line_base = line_list.replace(/\n|(運転状況|列車遅延|路線|詳細)|<td><span.*<\/td>|<.?th>|<tr>|<.?table>/g, "");
var line_top_del = line_base.replace("状況", "");
var line_td_del_1 = line_top_del.replace(/<td>/g, "\n");
var line_span_del = line_td_del_1.replace(/<\/span>|<\/a>/g, "");
var line_a_del = line_span_del.replace(/<a href=".*\/">/g,"");
var line_td_del_2 = line_a_del.replace(/<\/td>/g, "\n" );
var line = line_td_del_2.replace(/<\/tr>/g, "━─━─━─━─━─━─━─━");
if(line !== '事故・遅延情報はありません'){
// slackに投稿
function postMessage(message, hookPoint){
var payload = {
"text": message,
"channelId": '#information',
"userName": 'train-info',
"icon_emoji": ':train:'
}
var options = {
"method": "POST",
"payload": JSON.stringify(payload),
"headers": {
"Content-type": "application/json",
}
}
var response = UrlFetchApp.fetch(hookPoint, options);
if (response.getResponseCode() == 200) {
return response;
}
return false;
}
postMessage("\n" + "◆関東遅延情報 " + date + "\n" + yahoo + "\n" + line,'メモしたWebhookURL');
}else{
postMessage("\n" + "◆関東遅延情報 " + date + "\n" + "○ 事故・遅延情報はありません。" + "\n"+ yahoo,'メモしたWebhookURL');
}
}catch(e){
result = "エラーの内容:" + e;
Logger.log(result);
postMessage("◆Script実行エラーです。");
}
}
Reference
이 문제에 관하여(【GoogleAppsScript】 【Slack】 기차 지연 정보 post), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/H_Neco/items/937ecde84bde9c1c1710텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)