매일 아침 Slack에 날씨와 일정을 알리는 Google Apps Script
개요
라는 기능을 Google Apps Script를 사용하여 구현했습니다.
기본적으로
外部API → Google Apps Script → Slack Incoming Webhook
같은 구성으로하고 있습니다.
여기에 Google Apps Script를 작성하고 실행하면 날씨, 캘린더 등의 정보를 Slack에 전달할 수 있습니다.
Google Apps Script란?
Google Apps Script는 Google에서 제공하는 서버측 스크립팅 환경입니다.
기본적으로 Chrome에서 스크립트를 작성하기만 하면 됩니다.
이미 좋은 qiita가 가득 찼습니다만, 도입에는 이하의 기사를 참고로 했습니다.
Google Apps Script 시작
스니펫
날씨를 Slack에 알립니다.
코드.gsfunction getWeatherPostSlack() {
var response = UrlFetchApp.fetch("http://weather.livedoor.com/forecast/webservice/json/v1?city=130010");
var json=JSON.parse(response.getContentText());
Logger.log(json["title"]);
Logger.log(json["description"]);
Logger.log(json["forecasts"]);
var data={
"text":json["description"]["publicTime"]+json["description"]["text"],
"username": json["title"],
"icon_emoji" : ":sunny:"
}
var options =
{
"method" : "POST",
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
// SlackのIncoming WebhookのURLを取得して入力
UrlFetchApp.fetch("https://hooks.slack.com/services/***/***/***", options);
}
↓Slack에 이렇게 느낄 수 있습니다.
Google 캘린더 내일 일정을 Slack에 알립니다.
코드.gsfunction getCalendarPostSlack() {
var dt = new Date();
dt.setDate(dt.getDate() + 1);//明日にset
//カレンダーURL、もしくはメールアドレスを取得して入力。
var myCal=CalendarApp.getCalendarById('*****@group.calendar.google.com');
var events=myCal.getEventsForDay(dt);
var strBody = "";
// イベントごとにループ
for(var i_e=0;i_e<events.length;i_e++){
var strTitle=events[i_e].getTitle();
var strStart=_HHmm(events[i_e].getStartTime());
var strEnd=_HHmm(events[i_e].getEndTime());
strBody=strBody + "`"+strStart + ' - ' + strEnd +"`"+" "+strTitle+ '\n'; //ここはSlackで送りたい文章に合わせて調整
}
var data={
"text":strBody,
"username": "明日の予定",
"icon_emoji" : ":tokyo_tower:"
}
var options =
{
"method" : "POST",
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
// SlackのIncoming WebhookのURLを取得して入力
UrlFetchApp.fetch("https://hooks.slack.com/services/***/***/***", options);
}
function _HHmm(str){
return Utilities.formatDate(str, 'JST', 'HH:mm');
}
↓Slack에 이렇게 느낄 수 있습니다.
(추기)
2018년 4월 현재 Slack의 기본 기능으로 Google 캘린더에서 일정을 알리는 기능이 있습니다.
다만, 「내일의 예정을 정리해 전날에 통지한다」기능이 존재하지 않기 때문에, 이번 작성했습니다.
날씨 API 정보
여러 가지가 있지만 livedoor API를 이용.
아래와 같은 URL로부터 도쿄도의 날씨 정보를 Json 형식으로 취득합니다.
API에 대한 참고.
ht tp // // 헉-아피 s. bgs포 t. jp/2013/03/우바바피. HTML
htps : //가 되어-t. 이 m/가 s-아피-우아테 r/
Google Calendar API 정보
캘린더별 URL에서 정보를 얻을 수 있습니다.
자신의 캘린더의 URL 취득 등, 이하를 참고로 했습니다. 감사.
htps : //가 되어-t. 이 m / 가 s- ㅇ
h tp // w w. 오 ぇ 아 pscri pt.んふぉ / 2017-12-31 / ㄴ r_게 t_안 d_레기s r. HTML
Slack의 Incoming Webhook URL을 얻는 방법
Slack의 Webhook URL 획득 절차
이해하기 쉽습니다.
제 경우에는 Curl로 보내는 테스트 을 해서 사용하기 시작했습니다.
실행 시간을 설정하는 방법
Google Apps Script는 스크립트 실행 시간을 쉽게 지정할 수 있습니다.
한밤중에 상사에게 Slack을 던지는 봇을 순식간에 만들 수 있군요.
왼쪽 상단의 시계 표시를 누릅니다.
시간 설정용 창이 나오므로 원하는 시간으로 설정합니다.
애초에 webhook은?
Webhook은 API의 컨셉 중 하나 같다. 요점은 API입니다.
일반적인 API는 여기에서 API를 호출하여 정보를 받는 반면 Webhook은 서버 측에서 원하는 URL을 호출하는 메커니즘입니다.
구그라면 야구 감독과 워밍업중인 투수의 예가 나왔습니다.
날씨를 Slack에 알립니다.
코드.gs
function getWeatherPostSlack() {
var response = UrlFetchApp.fetch("http://weather.livedoor.com/forecast/webservice/json/v1?city=130010");
var json=JSON.parse(response.getContentText());
Logger.log(json["title"]);
Logger.log(json["description"]);
Logger.log(json["forecasts"]);
var data={
"text":json["description"]["publicTime"]+json["description"]["text"],
"username": json["title"],
"icon_emoji" : ":sunny:"
}
var options =
{
"method" : "POST",
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
// SlackのIncoming WebhookのURLを取得して入力
UrlFetchApp.fetch("https://hooks.slack.com/services/***/***/***", options);
}
↓Slack에 이렇게 느낄 수 있습니다.
Google 캘린더 내일 일정을 Slack에 알립니다.
코드.gs
function getCalendarPostSlack() {
var dt = new Date();
dt.setDate(dt.getDate() + 1);//明日にset
//カレンダーURL、もしくはメールアドレスを取得して入力。
var myCal=CalendarApp.getCalendarById('*****@group.calendar.google.com');
var events=myCal.getEventsForDay(dt);
var strBody = "";
// イベントごとにループ
for(var i_e=0;i_e<events.length;i_e++){
var strTitle=events[i_e].getTitle();
var strStart=_HHmm(events[i_e].getStartTime());
var strEnd=_HHmm(events[i_e].getEndTime());
strBody=strBody + "`"+strStart + ' - ' + strEnd +"`"+" "+strTitle+ '\n'; //ここはSlackで送りたい文章に合わせて調整
}
var data={
"text":strBody,
"username": "明日の予定",
"icon_emoji" : ":tokyo_tower:"
}
var options =
{
"method" : "POST",
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
// SlackのIncoming WebhookのURLを取得して入力
UrlFetchApp.fetch("https://hooks.slack.com/services/***/***/***", options);
}
function _HHmm(str){
return Utilities.formatDate(str, 'JST', 'HH:mm');
}
↓Slack에 이렇게 느낄 수 있습니다.
(추기)
2018년 4월 현재 Slack의 기본 기능으로 Google 캘린더에서 일정을 알리는 기능이 있습니다.
다만, 「내일의 예정을 정리해 전날에 통지한다」기능이 존재하지 않기 때문에, 이번 작성했습니다.
날씨 API 정보
여러 가지가 있지만 livedoor API를 이용.
아래와 같은 URL로부터 도쿄도의 날씨 정보를 Json 형식으로 취득합니다.
API에 대한 참고.
ht tp // // 헉-아피 s. bgs포 t. jp/2013/03/우바바피. HTML
htps : //가 되어-t. 이 m/가 s-아피-우아테 r/
Google Calendar API 정보
캘린더별 URL에서 정보를 얻을 수 있습니다.
자신의 캘린더의 URL 취득 등, 이하를 참고로 했습니다. 감사.
htps : //가 되어-t. 이 m / 가 s- ㅇ
h tp // w w. 오 ぇ 아 pscri pt.んふぉ / 2017-12-31 / ㄴ r_게 t_안 d_레기s r. HTML
Slack의 Incoming Webhook URL을 얻는 방법
Slack의 Webhook URL 획득 절차
이해하기 쉽습니다.
제 경우에는 Curl로 보내는 테스트 을 해서 사용하기 시작했습니다.
실행 시간을 설정하는 방법
Google Apps Script는 스크립트 실행 시간을 쉽게 지정할 수 있습니다.
한밤중에 상사에게 Slack을 던지는 봇을 순식간에 만들 수 있군요.
왼쪽 상단의 시계 표시를 누릅니다.
시간 설정용 창이 나오므로 원하는 시간으로 설정합니다.
애초에 webhook은?
Webhook은 API의 컨셉 중 하나 같다. 요점은 API입니다.
일반적인 API는 여기에서 API를 호출하여 정보를 받는 반면 Webhook은 서버 측에서 원하는 URL을 호출하는 메커니즘입니다.
구그라면 야구 감독과 워밍업중인 투수의 예가 나왔습니다.
캘린더별 URL에서 정보를 얻을 수 있습니다.
자신의 캘린더의 URL 취득 등, 이하를 참고로 했습니다. 감사.
htps : //가 되어-t. 이 m / 가 s- ㅇ
h tp // w w. 오 ぇ 아 pscri pt.んふぉ / 2017-12-31 / ㄴ r_게 t_안 d_레기s r. HTML
Slack의 Incoming Webhook URL을 얻는 방법
Slack의 Webhook URL 획득 절차
이해하기 쉽습니다.
제 경우에는 Curl로 보내는 테스트 을 해서 사용하기 시작했습니다.
실행 시간을 설정하는 방법
Google Apps Script는 스크립트 실행 시간을 쉽게 지정할 수 있습니다.
한밤중에 상사에게 Slack을 던지는 봇을 순식간에 만들 수 있군요.
왼쪽 상단의 시계 표시를 누릅니다.
시간 설정용 창이 나오므로 원하는 시간으로 설정합니다.
애초에 webhook은?
Webhook은 API의 컨셉 중 하나 같다. 요점은 API입니다.
일반적인 API는 여기에서 API를 호출하여 정보를 받는 반면 Webhook은 서버 측에서 원하는 URL을 호출하는 메커니즘입니다.
구그라면 야구 감독과 워밍업중인 투수의 예가 나왔습니다.
Google Apps Script는 스크립트 실행 시간을 쉽게 지정할 수 있습니다.
한밤중에 상사에게 Slack을 던지는 봇을 순식간에 만들 수 있군요.
왼쪽 상단의 시계 표시를 누릅니다.
시간 설정용 창이 나오므로 원하는 시간으로 설정합니다.
애초에 webhook은?
Webhook은 API의 컨셉 중 하나 같다. 요점은 API입니다.
일반적인 API는 여기에서 API를 호출하여 정보를 받는 반면 Webhook은 서버 측에서 원하는 URL을 호출하는 메커니즘입니다.
구그라면 야구 감독과 워밍업중인 투수의 예가 나왔습니다.
같은 느낌 같네요.
Baseball managers could really use webhooks. As the game progresses, they often want to change pitchers. To do this requires the new pitcher to first warm up in the bullpen, which is usually over 300 feet from the team's dugout. television, you'll often see the manager pick up a phone in the dugout. He's making a call to the bullpen to check on the new pitcher.
“Is he warmed up yet?”
“Not yet”
Then he hangs up the phone. In a few minutes he’ll have to call again. Programmers would call this polling and it’s process-intensive for both sides. A webhook lets you say, “call me when he’s warmed up.”
htps : // 센 dg 리 d. 코 m / b ぉ g / ぇ b 호오 k vs - 아피 ぁ ts - ぢふぇ 렌 세 /
마지막으로
잘못된 곳 등이 있으면 지적하십시오.
Reference
이 문제에 관하여(매일 아침 Slack에 날씨와 일정을 알리는 Google Apps Script), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mashimo_/items/f9497d5b37757db1b276
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(매일 아침 Slack에 날씨와 일정을 알리는 Google Apps Script), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mashimo_/items/f9497d5b37757db1b276텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)