Как я могу передать значения из `HtmlService.createHtmlOutput ()` обратно в `doGet ()`? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть форма Google, которая отправляет автоматические триггеры электронной почты через Google Apps Script на основе функции onFormSubmit (). В этом письме есть одна ссылка, которая инициирует открытие страницы index.html. На странице index.html есть 2 ссылки для подтверждения (одобрить / отклонить), и после нажатия на любую из ссылок для подтверждения она отправляет уведомление по электронной почте заявителю.

Пример кода:

code.gs

function onFormSubmit(e) {

  // Capture Data
  var values = e.namedValues;
  var name = values['Name'];
  var email = values['Email'];

  var url = 'my-web-app-url';

  var htmlBody = var htmlBody = '<ul>';
                 htmlBody += '<li>' + 'Name: ' + name + '</li>';
                 htmlBody += '<li>' + 'Email: ' + period + '</li>';
                 htmlBody += '</ul>';

  // Link to open HTML page
  var open = url + '?approval=open' + '&reply=' + email + '&name=' + name;

  var messageBody = 'Hi ' + ', <br><br>' + 
                    'You have received a new form submission that requires your approval.<br><br>' + '<a href='+ open + '>Open Link</a>';

  // Sends email to Reporting Officer
  MailApp.sendEmail({
    to: 'test@example.com',
    subject: 'Approval Required',
    htmlBody: messageBody
  });

}

function doGet(e) {

  // Capture Applicant's Data
  var name = e.parameter.name;
  var email = e.parameter.reply;
  var approval = e.parameter.approval;

  if (approval == 'open') {

    // Renders HTML
    return HtmlService.createHtmlOutputFromFile('index');

  } else {

    // If approval is 'true' or 'false', notify applicant
    var emailBody = 'Dear ' + name + ', <br><br>' + 
                    'Your application has been approved.';

    MailApp.sendEmail({
      to: email,
      subject: 'Application Approved',
      htmlBody: emailBody
    });

  }

}

function generateMessage() {

  var name = e.parameter.name
  var approval = e.parameter.approval

  if (approval = 'true') {
    var msg = "You have approved " + name + "'s application. An email has been sent to him/her.";
  } else {
    var msg = "You have rejected " + name + "'s application. An email has been sent to him/her."
  }

  return msg;

}

function generateApprovalLinks() {

  if (approval == 'open') {

    // Links to Approve / Reject
  var approve = url + '?approval=true' + '&reply=' + email + '&name=' + name;
  var reject = url + '?approval=false' + '&reply=' + email + '&name=' + name;

    return approve;
    return reject;

  }

}

index.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      google.script.run.generateMessage();
      google.script.run.generateApprovalLinks();
      document.getElementById("msg").innerHTML = msg;
    </script>
  </head>
  <body>
    <section class="hero">
      <div class="hero-body">
       <div class="container">
         <h1 class="title">Success</h1>
         <p id="msg"></p>

         <!-- Add an input field to capture remarks -->
         <label name="remarks">Remarks: </label>
         <input type="text" name="remarks">
         <!-- Output approval links -->
         <script type="text/javascript">
            document.write(approve);
            document.write(reject);
         </script>
         <!-- But how do I send this data back as parameter in my url? -->
       </div>
     </div>
    </section>
  </body>
</html>

Однако вместо того, чтобы щелкать ссылку одобрения / отклонения непосредственно в электронном письме триггера, я хотел бы разрешить «утверждающему человеку» включать некоторые текстовые замечания, добавляя поле ввода текста в вывод HTML . Кроме того, я хотел бы переместить эту ссылку подтверждения на ту же страницу вывода HTML, где пользователь затем может отправить свои замечания в качестве параметров url обратно в функцию doGet () в скрипте приложений , где я могу включить замечания в электронное письмо, которое отправляется пользователю.

Возможно ли это, и есть ли у кого-нибудь предложения о том, как мне поступить?

...