2017년 1월 24일 화요일

구글 독스(Google Docs) 응답을 받을때 Slack으로 받기

사실 그 동안 google apps script를 써보고 싶었는데, (시도도 몇번했지만) 너무 귀찮고 꼭 받아봐야하는 응답들이 생겨서, 대충 구글링 하다가 성공해 버렸다.

오늘 할 것은 사용자가 설문을 제출 할 경우, 제출한 내용을 슬랙으로 보내는 아주 간단한 내용이지만, 스크립트의 함수를 어떻게 연결하는지에 대한 방법도 있으니, 어쩌면 이거 하나만 보면 앱스 스크립트는 다 쓸 줄 안다고 생각해도 될지 모르겠다.

일단 나는 그런 느낌이다.

1. 구글 폼을 제작한다. (원하시는 대로 알아서)
2. 우측 상단의 메뉴버튼을 눌러서, 스크립트 편집기를 연다

3.그럼 이런 친구가 우릴 반기는데


4. 이 function 위에 한줄을 입력하고,

var POST_URL = "https://hooks.slack.com/services/$@$@$!$(웹훅 주소)";

5. myFunction()안에 아래 내용을 입력한다

var response = form.response.getItemResponses();
 
  // 슬랙으로 보내고 싶은 문항을 정리한다
  var x = response[0].getItem().getTitle();
  var y = response[0].getResponse();
  var z = x + ' ' + y
  var msg =
      { "payload": '{"text": "' + z + '"}' }

   var options =
   {
     "method" : "post",
     "payload" : msg
   };

   UrlFetchApp.fetch(POST_URL, options);


 // Make a POST request with form data.
 var resumeBlob = Utilities.newBlob('Hire me!', 'text/plain', 'resume.txt');
 var formData = {
   'name': 'Bob Smith',
   'email': 'bob@example.com',
   'resume': resumeBlob
 };
 // Because payload is a JavaScript object, it will be interpreted as
 // as form data. (No need to specify contentType; it will automatically
 // default to either 'application/x-www-form-urlencoded'
 // or 'multipart/form-data')
 var options = {
   'method' : 'post',
   'payload' : formData
 };
 UrlFetchApp.fetch('https://httpbin.org/post', options);

response[]는 각 항의 질문과, 답변을 가지고 있으며, getItem().getTitle()로 제목을,  getResponse()로 답변을 가져올수 있다.

6. 이제 myFunction을, 트리거로 설정한다.

다음과 같이 위의 메뉴에서 [리소스] -> [현재 프로젝트의 트리거]를 누르고,
(파일이름이 저장 안되었다면 저장하고)

새 트리거를 추가한다.


그리고 아래와 같이 설정한다.
myFunction을 / 설문지에서 / 제출시에 실행한다는 얘기다!

쉽다! 이것까지만 이해하면 아주 쉽다!

이렇게 생각해보면 사실 안에다 코드를 안넣고, 구글링한 다른 이름의 function들로 덮어 씌워도 된다.
뭐가 메인함수인지만 안다면 말이다.

이름이 myFuncion()일때부터 알아서 하세요 라고 말했던거다.
심지어 저게 어떤 trigger의 default로 설정되어있지도 않아서 난 좀 불편하다고 여겼는데, 어떻게 보면 당연할지도.

이제 그러면 설문지를 제출할때마다! 슬랙으로 알림이 오게 된다!
구글 앱스 스크립트는 js니까, 이제 이것만알면 뭐든지 할 수 있을것 같은 기분이다 ㅎㅎ

댓글 없음:

댓글 쓰기