구글스프레드 시트에서 앱스스크립트 확장프로그램을 사용하면 자바스크립트 코드와 함께 사용할 수 있습니다.
앱스스크립트에서 편집기로 코드를 작성한 후 트리거를 설정하면 동작합니다.
getActiveSheet(), getColumn() 함수등등 기본적으로 제공하는 함수가 존재합니다.
아래는 체크박스를 선택하면 제목행과 해당 행들의 데이터를 슬랙메시지로 전달하는 코드 예시입니다.
// 슬랙 Webhook URL을 여기에 입력
var SLACK_WEBHOOK_URL = "${웹훅주소}";
// 슬랙으로 메시지 전송하는 함수
function sendToSlack(message) {
var payload = {
"text": message,
"username": "${앱네임}",
"icon_emoji": ":로봇_얼굴:"
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}
// 셀 수정 시 실행되는 함수
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// 체크박스가 있는 I 열에서만 동작
if (range.getColumn() === 9 && (range.getValue() === true || range.getValue() === false)) {
var row = range.getRow();
var headers = sheet.getRange(1, 1, 1, 8).getValues()[0]; // A1:H1 헤더 가져오기
var values = sheet.getRange(row, 1, 1, 8).getValues()[0]; // 선택된 행의 A:H 값 가져오기
// 모든 셀이 입력된 경우만 동작
var isComplete = values.every(cell => cell !== "" && cell !== null && cell !== undefined);
if (isComplete && range.getValue() === true) {
// 슬랙 메시지 형식으로 데이터 포맷팅
var tableRows = headers.map((header, index) => `| ${header} | ${values[index]} |`).join("\n");
var message = `*Row ${row}의 모든 값이 입력되었습니다:*\n${tableRows}`;
// 메시지 슬랙 전송
sendToSlack(message);
// 전송 후, 체크박스를 다시 false로 설정하여 중복 전송 방지
range.setValue(false);
}
}
}