728x90
이번 주 목표
지원하기 (하루 2개)
리액트 강의 듣기 (최소 하루 소강의 2개)
오늘 목표
지원하기 (하루 2개)
리액트 강의 듣기 (최소 하루 소강의 2개)
자기소개서 초안 작성하기
오늘 한 것
지원하기 : 2개
DMsender : 업무 자동화 앱 스크립트
1. DMsender
구글 스프레드시트 - 슬랙 연동 자동화 앱 스크립트 코드
- 구글 스프레드 시트 2열에 이메일을 입력한다.
- 해당 이메일로 워크스페이스에 가입된 슬랙 유저에게 DM이 간다.
- 제작 목적
스파르타 코딩클럽 커리어톤 업무 중 자동화의 필요성과 가능성을 느껴 제작 - 참고 자료
Chat GPT
Google API 공식 문서들
Slack API 공식 문서들
function onEdit(e) {
// 편집된 시트의 정보 가져오기
if (e) {
var sheet = e.source.getSheetByName("sheet"); // 시트 이름을 적절히 변경
var range = e.range;
// 이메일이 입력된 열의 정보 가져오기 (예: 이메일이 있는 열이 2번째 열일 경우)
var emailColumn = 2; // 이메일이 있는 열의 번호를 적절히 변경
var email = sheet.getRange(range.getRow(), emailColumn).getValue();
// Slack API를 사용하여 Slack ID 찾기
var slackId = getSlackIdByEmail(email);
if (slackId) {
// Slack으로 보낼 메시지 생성
var message = "슬랙 DM 메시지 내용";
// Slack으로 DM 보내기
sendSlackDM(slackId, message);
} else {
Logger.log("Slack ID를 찾을 수 없습니다.");
}
} else {
Logger.log("이벤트 정보가 없습니다.");
}
}
// Slack API를 사용하여 이메일로 Slack ID를 찾는 함수
function getSlackIdByEmail(email) {
// Slack API 호출을 위한 Slack App의 OAuth Access Token
var slackAccessToken =
PropertiesService.getScriptProperties().getProperty("slackAccessToken");
// Slack API 호출 URL
var apiUrl = "https://slack.com/api/users.lookupByEmail";
// Slack API 호출 옵션 설정
var options = {
method: "post",
contentType: "application/x-www-form-urlencoded",
headers: {
Authorization: "Bearer " + slackAccessToken,
},
payload: "email=" + encodeURIComponent(email),
muteHttpExceptions: true,
};
// Slack API 호출 및 응답 처리
var response = UrlFetchApp.fetch(apiUrl, options);
var responseData = JSON.parse(response.getContentText());
// Slack API 응답에서 Slack ID 추출
if (responseData.ok) {
return responseData.user.id;
} else {
Logger.log("Slack API 오류: " + responseData.error);
return null;
}
}
// Slack으로 DM을 보내는 함수
function sendSlackDM(slackId, message) {
// Slack API 호출을 위한 Slack App의 OAuth Access Token
var slackAccessToken =
PropertiesService.getScriptProperties().getProperty("slackAccessToken");
// Slack API 호출 URL
var apiUrl = "https://slack.com/api/chat.postMessage";
// Slack API 호출 옵션 설정
var options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: "Bearer " + slackAccessToken,
},
payload: JSON.stringify({
channel: slackId, // Slack ID를 사용하여 DM을 보낼 대상 지정
text: message,
}),
muteHttpExceptions: true,
};
// Slack API 호출 및 응답 처리
var response = UrlFetchApp.fetch(apiUrl, options);
var responseData = JSON.parse(response.getContentText());
// Slack API 응답 확인
if (responseData.ok) {
Logger.log("Slack DM이 성공적으로 전송되었습니다.");
} else {
Logger.log("Slack API 오류: " + responseData.error);
}
}
사용을 위해서 해야 할 일
1. 슬랙 access token 발급
2. 구글 앱 스크립트 oauth 권한 부여
3. 앱 스크립트 property 설정
KPT
Keep
열심히 하는 것
Problem
목표를 잊는 것
Try
목표를 꼭 맞추지 않아도 되니 가치와 가능성이 있는 일이라면 시간 투자하기
소감
자동화에 성공했다.
앱 스크립트이고 GPT를 많이 이용해 내가 뭘 했다 하기엔 뭐하지만
개발에 있어서 중요한 포인트를 넘어선 것 같아 기쁘다.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20240103 (0) | 2024.01.03 |
---|---|
TIL 20240102 (4) | 2024.01.02 |
TIL 20231224 (0) | 2023.12.24 |
TIL 20231222 (0) | 2023.12.22 |
TIL 20231221 (2) | 2023.12.22 |