【전원 반드시】 멤버의 생일을 Slack에게 통지한다【축하해 준다】
11173 단어 슬랙GoogleAppsScript
이것은
Slack 작업공간의 멤버가 생일을 맞이할 때 알림이 날 수 있습니다.
계기
안의 사람은 비즈니스 측입니다만, 뜻밖에 개발부로부터 Udemy 강좌 을 받았으므로, 그쪽의 내용을 응용해 무엇인가 만들어 보려고 했습니다.
사용한 것
안의 사람은 비즈니스 측입니다만, 뜻밖에 개발부로부터 Udemy 강좌 을 받았으므로, 그쪽의 내용을 응용해 무엇인가 만들어 보려고 했습니다.
사용한 것
했던 일
Slack Incoming Webhook
Slack 프로필 > "기타 관리 항목"> "작업 공간 사용자 정의"
"작업 공간 사용자 정의"> "App 관리"
앱 관리 > 사용자 지정 통합에 Incomong Webhook 추가
사용자 지정 통합 > 통합 설정의 Webhook URL을 나중에 GAS에 삽입합니다.
통합 설정에서 알림을 받을 때 이름과 아이콘도 편집할 수 있습니다.
Google 캘린더
생일용 캘린더를 만들었습니다. 이 '설정 및 공유'를 열면,
캘린더 ID를 확인할 수 있습니다. 이쪽도 나중에 GAS에 묻습니다.
GAS
캘린더 정보 얻기
여기서 캘린더 ID를 지정하여 특정 캘린더 정보를 검색합니다.
function notifySlack() {
//お誕生日カレンダー情報の取得
const CALENDAR_ID = '[email protected]';
var Calendar = CalendarApp.getCalendarById(CALENDAR_ID);
검색할 정보에 대해 자세히 알아보기
//今日の日付
var startDate = new Date();
//「誕生日」を検索文字列に指定
var optionsforGas = {
search: '誕生日'
}
var BirthdayEvents = Calendar.getEventsForDay(startDate,optionsforGas);
var url = 'https://hooks.slack.com/services/hoge/hogehogehogehogehogehoge'
var title = '';
for(var i in BirthdayEvents) {
title = BirthdayEvents[i].getTitle();
}
알림 설정
생일 멤버가 있는 날에만 통지가 날 수 있도록 조건 분기시킨다(처음에는 이것을 하지 않았기 때문에, 「오늘은」만의 허무 통지가 날아가는 사태가 일어나고 있었습니다).
if(BirthdayEvents.length != 0){
var text = '今日は'
//Incoming webhookからslackに送信する値
var payload = {
'username': '***',
'text': text += title,
'channel':'#develop'
};
var optionsforSlack = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, optionsforSlack);
}
}
트리거 설정
GAS > 편집 > "현재 프로젝트 트리거"를 선택
트리거 추가를 클릭합니다.
이벤트 소스는, 일단 「시간 주도형」으로 했습니다만, 풀다운으로 「캘린더로부터」도 선택할 수 있으므로 그쪽이라도 좋을 것(차이는 잘 모르고 있다).
배운 것
여기 , 처음에는 이하와 같이 기술하고 있었습니다.
이것이라면, 생일 사람이 없는 경우라도 변수가 움직여 버리기 때문에 변수마다 if로 둘러싸는 것이 쓸데없는 처리가 없어도 좋다.
var text = '今日は'
//Incoming webhookからslackに送信する値
var payload = {
'username': '***',
'text': text += title,
'channel':'#develop'
};
var optionsforSlack = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
if(BirthdayEvents.length != 0){
UrlFetchApp.fetch(url, options);
}
참고 자료
function notifySlack() {
//お誕生日カレンダー情報の取得
const CALENDAR_ID = '[email protected]';
var Calendar = CalendarApp.getCalendarById(CALENDAR_ID);
//今日の日付
var startDate = new Date();
//「誕生日」を検索文字列に指定
var optionsforGas = {
search: '誕生日'
}
var BirthdayEvents = Calendar.getEventsForDay(startDate,optionsforGas);
var url = 'https://hooks.slack.com/services/hoge/hogehogehogehogehogehoge'
var title = '';
for(var i in BirthdayEvents) {
title = BirthdayEvents[i].getTitle();
}
if(BirthdayEvents.length != 0){
var text = '今日は'
//Incoming webhookからslackに送信する値
var payload = {
'username': '***',
'text': text += title,
'channel':'#develop'
};
var optionsforSlack = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, optionsforSlack);
}
}
여기 , 처음에는 이하와 같이 기술하고 있었습니다.
이것이라면, 생일 사람이 없는 경우라도 변수가 움직여 버리기 때문에 변수마다 if로 둘러싸는 것이 쓸데없는 처리가 없어도 좋다.
var text = '今日は'
//Incoming webhookからslackに送信する値
var payload = {
'username': '***',
'text': text += title,
'channel':'#develop'
};
var optionsforSlack = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
if(BirthdayEvents.length != 0){
UrlFetchApp.fetch(url, options);
}
참고 자료
여러 사람에게 가르치면서 일단 손을 움직인 것 같은 곳이 있으므로, 또 머리를 정리하고 나중에 추기할 예정입니다.
Reference
이 문제에 관하여(【전원 반드시】 멤버의 생일을 Slack에게 통지한다【축하해 준다】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/menstos2525/items/634ebae257fee9893ff9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)