개인 소유의 구글시트와 연동하기

✏️ 왈라에 내장된 '구글시트 연동' 기능에서 시트의 소유주는 파프리카데이터랩으로, 민감한 개인정보 등록 시 유의해주세요. 회사 계정으로 데이터를 연동하고 싶으시다면, '웹훅'을 통해 구글 시트와 연동할 수 있어요.
  1. 구글시트의 ‘확장 프로그램’ 탭에서 ‘App Script’를 눌러주세요.


  2. 새 스크립트를 추가해주세요.


  3. 기본 내용을 모두 지운 후, 아래의 코드를 붙여넣어주세요.

    function doPost(e) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[0];
      ss.setSpreadsheetTimeZone('Asia/Seoul');
      // Parsing the POST data to get the required data
      var data = JSON.parse(e.postData.contents);
      
      var formAnswers = data.form_answers;
      var submittedAt = new Date(data.form_response.submitted_at);
    
      var responseId = data.form_response.response_id.slice(0,10);
      // First row: labels
      if (sheet.getLastRow() === 0) {
        var fieldLabels = formAnswers.map(function(answer) {
          if (answer.type === 'RADIO_GRID' || answer.type === 'CHECKBOX_GRID') {
            return answer.response.map(el => `${answer.label} - ${el.lineLabel}`);
          }
          return answer.label
        }).flat();
        var headers = ['Response ID', 'Time Submitted', ...fieldLabels]
        sheet.appendRow(headers);
      } 
       var rowData = formAnswers.map(field => {
          switch (field.type) {
            case 'CHECKBOX':
            case 'RADIO': {
              var isResponseArray = Array.isArray(field.response);
              if (isResponseArray) {
                return field.response.filter(el => Boolean(el)).join(', ');
              }
              return field.response || '';
            }
            case 'CHECKBOX_GRID':
            case 'RADIO_GRID': {
              var isLineResponseArray = Array.isArray(field.response.lineResponse)
              return field.response.map(el => {
                if (isLineResponseArray) {
                  return el.lineResponse.filter(el => Boolean(el)).join(', ');
                }
                return el.lineResponse || '';
              })
            }
            case 'GEOLOCATION': {
              var response = field.response || {};
              var responseArray = Object.entries(response).map(el => `${el[0]}: ${el[1]}`);
              return responseArray.join(', ');
            }
            case 'HIDDEN': {
              return field.response === undefined || field.response === null
                ? ''
                : field.response;
            }
            default: {
              var response =
                field.response === undefined || field.response === null ? '' : field.response;
              if (Array.isArray(response)) {
                return response.join(', ');
              }
              return response;
            }
          }
        }).flat();
      sheet.appendRow([responseId, submittedAt, ...rowData]);
      return ContentService.createTextOutput(JSON.stringify({result: "success"})).setMimeType(ContentService.MimeType.JSON);
    }
  4. ‘새 배포’를 눌러주세요.


  5. 유형은 ‘웹 앱’, 액세스 권한이 있는 사용자는 ‘모든 사용자’로 설정해주세요.


  6. 액세스를 승인해주세요.


  7. ‘URL’을 복사해주세요.


  8. 왈라의 ‘연동하기’ 탭에서 ‘웹훅 관리’ 버튼을 눌러주세요.


  9. URL을 붙여넣고 웹훅을 추가해주세요.


  10. 변경 사항을 저장한 후, ‘웹훅 설정’에서 활성화 해주세요.


  11. 응답이 도착하면 구글시트에 응답 내용이 기록돼요.