may*_*roy 2 google-apps-script google-forms google-form-quiz
如果用户没有在 20 分钟内点击提交,我想在我的 Google 表单中使用应用程序脚本在 20 分钟内自动提交表单。无论如何要实现这个????
不,您无法控制 Google 表单的客户端,即使您向其添加 Apps 脚本,因为 Apps 脚本在服务器上运行。
一种可能的解决方案是将您的表单作为Google Apps Script Web 应用程序提供。那时您可以编写客户端 JavaScript 并使用window.setTimeout在 20 分钟后用于提交表单。
以下是一些示例文件Code.gs和quiz.html,它们可以提供启动 Web 应用程序的基本框架。一个空白项目将有Code.gs作为默认文件,然后您必须添加文件 > 新建 > HTML 文件以启动另一个文件。
您可以id在注释掉的行中输入您拥有的任何电子表格的 ,Code.gs以将响应附加到该电子表格中。(您还可以根据需要通过创建新电子表格来自动化该过程。 可以在此处找到创建电子表格以保存 Apps 脚本示例数据的示例。
// 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 */ ]);
}
}
Run Code Online (Sandbox Code Playgroud)
<!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>
Run Code Online (Sandbox Code Playgroud)
使用发布 > 部署为 Web 应用程序进行测试...
| 归档时间: |
|
| 查看次数: |
11213 次 |
| 最近记录: |