개발 방법
- https://api.slack.com/apps 에서 Create an app 버튼을 누릅니다.
- From scratch를 누르고 원하는 App name, workspace를 적어줍니다.
- 좌측 메뉴에서 Incoming webhook을 누르고, Activate해줍니다. 관리자 권한이 필요한 슬랙이라면 관리자의 승인을 받아주세요.
- Incoming Webhooks 페이지에서 [Add new webhook to Workspace] 버튼을 누릅니다
- 메세지 전송을 원하는 채널을 선택합니다.
- 웹훅 URL이 나왔어요. 이 URL을 이따 사용할거예요.
- 푸시를 원하는 메세지 디비를 구글닥스로 만들어줍니다. 그리고 메뉴에서 확장 프로그램 > Apps Scripts를 눌러줍니다.
- 스프레드시트를 읽어 원하는 슬랙 채널에 메세지를 보내는 코드를 작성합니다. url에는 아까 만든 웹훅 URL을 적어주고, 원하는 채널명도 바꿔서 적어줍니다. 아래 코드를 참고해주세요.
멋진 코드를 작성해주신 토스증권의 나소인 님 감사해요!
function sendtoslack() {
var today = new Date();
Logger.log(today);
var url = "https://hooks.slack.com/services/T03FE7QJV/당신의웹훅URL";
var sheet = SpreadsheetApp.getActive().getSheetByName('list');
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
var searchValue = "0";
var updateValue = "1";
var updateColumn = 1; // the column number to update
var updateRow = -1; // initialize to -1 to indicate value not found
var totalCount = values.length;
var currentCount = 0;
for (var i = 0; i < values.length; i++) {
currentCount++;
if (values[i][0] == searchValue) {
updateRow = i + 1; // add 1 to convert from 0-indexed to 1-indexed
break;
}
}
if (updateRow != -1) {
var rangeToUpdate = sheet.getRange(updateRow, updateColumn, 1, 1);
rangeToUpdate.setValue(updateValue);
}
var values = sheet.getRange(updateRow, updateColumn, 1, 5).getValues();
var value = values[0];
var payload = {
"channel": "#원하는채널명",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "> _점심을 꽤나 둔둔하게 드신 모양이로군._\n> _후식으로 간단한 타입챌린지 하나 풀고가시게._\n"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": `:ts-boom: *[${value[1]}] ${value[2]}* (${currentCount - 2}/${totalCount - 2}) <${value[4]}|🔗>`
},
"accessory": {
"type": "button",
"style": "primary",
"text": {
"type": "plain_text",
"text": "문제풀러가기🧩",
"emoji": true
},
"url": `https://tsch.js.org/${value[3]}/play/ko`,
}
},
{
"type": "divider"
}
]
};
Logger.log(payload);
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
return UrlFetchApp.fetch(url,options);
}
- [실행]을 누르면 테스트해보실 수 있어요.
- 시계 모양 아이콘을 눌러 트리거 페이지에 들어가고, [트리거 추가]버튼을 눌러 원하는 트리거 기준을 설정해줍니다.
- 완료! 고생하셨어요.