구글폼은 그 대단한 기능에도 불구하고 너무 구린 디자인을 갖고 있다.
헉 소리 나게 예쁜 typeform이 나왔지만 헉소리나게 비싼 가격으로 인해 엄두를 내고 있지 못하다가
smore.im이 나왔다. 예쁜디자인에, 무료버전 제한도 그리 많지 않은 너무 좋은 설문 앱이다.
자 그래서 응답을 하면 응답이 있었다는 알림을 줘야 하는데 구글폼은 onformsubmit 트리거가 있어서 쉽게 할 수 있다.
그런데 smore.im을 구글시트와 연동을 하면 onformsubmit 트리거를 사용할 수는 없다.
처음엔 onEdit를 갖고 낑낑대다가 onEdit는 수정된 셀 하나에만 작동하는 것이라는 사실을 알았다.
더 큰 문제는 사용자가 직접 수정하는 행위에 국한되고, smore에서 보내는 행 추가에는 동작을 안한다.
다른 방법이 없나 싶어 zapier webhook post request도 알아보고, 슬랙의 outgoing webhook도 알아봤지만
다들 유료에 난리다.
결국 구글시트에서 onChange를 사용해 무사히 해결했다.
https://whiseung.tistory.com/entry/Apps-Script%EC%9D%98-trigger-%EC%82%AC%EC%9A%A9%EA%B8%B0
https://developers.google.com/apps-script/guides/triggers/events?hl=ko
function onChange(e) {
var sheet = e.source.getActiveSheet();
var sheetName = sheet.getName();
if(sheetName == "Smore-" ) {
var range = e.range;
const row = sheet.getLastRow();
const lastColumn = sheet.getLastColumn();
const values = sheet.getRange(row, 1, 1, lastColumn).getValues()[0];
e.getValue();
Logger.log("새로 추가된 행의 값: " + values);
var message = "[응답알림] \n" + values[1]+", " + values[2]+", " + values[3]+", " + values[4]+", " + values[5];
var chatId = "-3"
var response = sendTelegram(message, chatId);
// 메일 발송
var aliases = GmailApp.getAliases();
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array
const subject = '잘 접수되었습니다';
const body = '안녕하세요. 감사합니다.
';
// var response =
GmailApp.sendEmail(values[3], subject, body + footnote, {
htmlBody: body + footnote,
bcc: '[email protected];',
name: '헤아림',
'from': aliases[0]
}
);
}
}