Авто отправить форму Google после определенного срока - PullRequest
0 голосов
/ 21 апреля 2019

Я хочу использовать скрипт приложения в моей форме Google, чтобы автоматически отправить форму через 20 минут, если пользователь не нажмет кнопку отправки в течение 20 минут.В любом случае реализовать это ????

1 Ответ

2 голосов
/ 21 апреля 2019

Нет, вы не можете контролировать клиентскую часть Google Forms, даже если вы добавляете в нее скрипт скриптов, потому что скрипт скриптов приложений запускается на сервере.

Одним из возможных решений является подача формы в виде веб-приложения Google Apps Script . В этот момент вы можете написать клиентский JavaScript и использовать window.setTimeout для отправки формы через 20 минут.

Вот несколько примеров файлов Code.gs и quiz.html, которые могут предоставить базовый каркас для запуска веб-приложения. Пустой проект будет иметь Code.gs в качестве файла по умолчанию, затем вам нужно добавить File> New> HTML file, чтобы запустить другой файл.

Вы можете ввести id любой вашей электронной таблицы в закомментированные строки в Code.gs, чтобы добавить ответ в эту электронную таблицу. (Вы также можете автоматизировать этот процесс, создав новую электронную таблицу по мере необходимости. Пример создания электронной таблицы для хранения данных для приложения Пример скрипта можно найти здесь .

// file Code.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("quiz");
}

function doPost(request) {
  if (request.answer) {
    console.log(request.answer);  // View > Execution transcript to verify this
    //var ss = SpreadsheetApp.openById(id).getSheetByName("Quiz Responses");
    //ss.appendRow([request.answer /* additional values comma separated here */ ]);
  }
}
<!DOCTYPE html>
<!-- file quiz.html -->
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>Quiz</h1>
    <form>
      What is Lorem Ipsum?
      <input name="loremipsum" type="text"/>
      <button>Submit</button>
    </form>
    <script>
      const button = document.querySelector("button");
      const timeLimitMinutes = 1; // low number for demo; change to 20 for application
      const timeLimitMilliseconds = timeLimitMinutes * 60 * 1000;
      // For this demo we are not going to serve a response page, so don't try to.
      button.addEventListener("submit", submitEvent => submitEvent.preventDefault());
      // attach our custom submit to both the button and to the timeout
      button.addEventListener("click", submitForm)
      window.setTimeout(submitForm, timeLimitMilliseconds)

      function submitForm() {
        button.setAttribute("disabled", true);
        document.querySelector("h1").textContent = "Quiz submitted";
        // for demo: submitting just a single answer.
        // research Apps Script documentation for rules on submitting forms, certain values not allowed
        // consider a helper function `makeForm()` that returns a safe object to submit.
        const answer = document.querySelector("input").value;
        google.script.run.doPost({ answer });
      }
    </script>
  </body>
</html>

Тестирование с помощью публикации> Развернуть как веб-приложение ...

...