의견에 응답하기

코딩 수준: 초급
시간: 15분
프로젝트 유형: 커스텀 메뉴가 포함된 자동화 이벤트 기반 트리거

목표

  • 솔루션의 기능을 이해합니다.
  • 애플리케이션 내에서 Apps Script 서비스가 수행하는 작업을 이해 솔루션을 제공합니다
  • 스크립트를 설정합니다.
  • 스크립트를 실행합니다.

이 솔루션 정보

Google Forms에서 의견에 대한 이메일 답장 초안을 자동으로 생성합니다. 이 학생들의 학습 과정에 대한 피드백에 초점을 맞추는 솔루션이지만, Google Forms를 통해 의견을 받는 사용 사례입니다.

Gmail에서 양식 제출 응답 전송 중

작동 방식

스크립트는 사용자가 양식을 작성해 주세요. 양식을 제출할 때마다 스크립트는 Gmail에 이메일 초안을 만듭니다. 이 양식을 제출한 사용자의 이메일 주소로 일반적인 감사 메시지를 포함합니다. 이메일을 수정하기 전에 전송합니다.

Apps Script 서비스

이 솔루션은 다음 서비스를 사용합니다.

기본 요건

이 샘플을 사용하려면 다음과 같은 기본 요건이 필요합니다.

  • Google 계정 (Google Workspace 계정은 관리자의 승인이 필요함)
  • 인터넷에 액세스할 수 있는 웹브라우저

스크립트 설정

다음 버튼을 클릭하여 의견에 답변 샘플의 사본을 만드세요. 스프레드시트입니다. 이를 위한 Apps Script 프로젝트 솔루션이 스프레드시트에 첨부됩니다.
사본 만들기

스크립트 실행

  1. 양식 답장 도구 >를 클릭합니다. 자동 임시보관 답장을 사용 설정합니다. 이를 위해 페이지를 새로고침해야 할 수 있습니다. 맞춤 메뉴가 표시됩니다.
  2. 메시지가 표시되면 스크립트를 승인합니다. OAuth 동의 화면에 확인되지 않은 앱입니다.라는 경고가 표시되면, 고급 >을 선택하여 계속합니다. {프로젝트 이름}(으)로 이동(안전하지 않음)

  3. 양식 답장 도구 > 자동 사용 설정을 클릭합니다. 답글 초안 작성을 다시 할 수 있습니다.

  4. 도구 > 양식 관리를 클릭합니다. > 실시간 양식으로 이동을 탭합니다.

  5. 양식을 작성한 후 제출을 클릭합니다.

  6. Gmail을 열고 초안을 확인합니다. 새 초안이 생성됩니다. 양식 있습니다.

코드 검토

이 솔루션의 Apps Script 코드를 검토하려면 다음을 클릭합니다. 아래에서 소스 코드 보기:

소스 코드 보기

Code.gs

solutions/automations/course-feedback-response/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/automations/course-feedback-response

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
 * Creates custom menu for user to run scripts.
 */
function onOpen() {
  let ui = SpreadsheetApp.getUi();
  ui.createMenu('Form Reply Tool')
      .addItem('Enable auto draft replies', 'installTrigger')
      .addToUi();
}

/**
 * Installs a trigger on the Spreadsheet for when a Form response is submitted.
 */
function installTrigger() {
  ScriptApp.newTrigger('onFormSubmit')
      .forSpreadsheet(SpreadsheetApp.getActive())
      .onFormSubmit()
      .create();
}

/**
 * Creates a draft email for every response on a form
 *
 * @param {Object} event - Form submit event
 */
function onFormSubmit(e) {
  let responses = e.namedValues;

  // parse form response data
  let timestamp = responses.Timestamp[0];
  let email = responses['Email address'][0].trim();

  // create email body
  let emailBody = createEmailBody(responses);

  // create draft email
  createDraft(timestamp, email, emailBody);
}

/**
 * Creates email body and includes feedback from Google Form.
 *
 * @param {string} responses - The form response data
 * @return {string} - The email body as an HTML string
 */
function createEmailBody(responses) {
  // parse form response data
  let name = responses.Name[0].trim();
  let industry = responses['What industry do you work in?'][0];
  let source = responses['How did you find out about this course?'][0];
  let rating = responses['On a scale of 1 - 5 how would you rate this course?'][0];
  let productFeedback = responses['What could be different to make it a 5 rating?'][0];
  let otherFeedback = responses['Any other feedback?'][0];

  // create email body
  let htmlBody = 'Hi ' + name + ',<br><br>' +
    'Thanks for responding to our course feedback questionnaire.<br><br>' +
      'It\'s really useful to us to help improve this course.<br><br>' +
        'Have a great day!<br><br>' +
          'Thanks,<br>' +
            'Course Team<br><br>' +
              '****************************************************************<br><br>' +
                '<i>Your feedback:<br><br>' +
                  'What industry do you work in?<br><br>' +
                    industry + '<br><br>' +
                      'How did you find out about this course?<br><br>' +
                        source + '<br><br>' +
                          'On a scale of 1 - 5 how would you rate this course?<br><br>' +
                            rating + '<br><br>' +
                              'What could be different to make it a 5 rating?<br><br>' +
                                productFeedback + '<br><br>' +
                                  'Any other feedback?<br><br>' +
                                    otherFeedback + '<br><br></i>';

  return htmlBody;
}

/**
 * Create a draft email with the feedback
 *
 * @param {string} timestamp Timestamp for the form response
 * @param {string} email Email address from the form response
 * @param {string} emailBody The email body as an HTML string
 */
function createDraft(timestamp, email, emailBody) {
  console.log('draft email create process started');

  // create subject line
  let subjectLine = 'Thanks for your course feedback! ' + timestamp;

  // create draft email
  GmailApp.createDraft(
      email,
      subjectLine,
      '',
      {
        htmlBody: emailBody,
      }
  );
}

참여자

이 샘플은 benlcollins.com의 교육자인 Ben Collins가 제작했습니다. Google Developer Expert입니다.

이 샘플은 Google에서 Google Developer Experts의 도움을 받아 유지관리합니다.

다음 단계