javascript - 如何向 Google 表单添加登录信息以供用户填写

标签 javascript google-apps-script google-forms

我一直在网上阅读和观看许多教程,但我找不到可以最初使用单个输入文本加载某种对话框或登录页面的内容,以便我可以使用应用程序脚本对其进行处理。

完成表单的用户不会触发 onFormOpen()。

在我的 onSubmitForm() 函数中,我有以下代码:

function onFormSubmit(e){
  var formResponses = FormApp.getActiveForm().getResponses();
  var formResponse = formResponses[formResponses.length-1];
  var itemResponses = formResponse.getItemResponses();
  for (var j = 0; j < itemResponses.length; j++) {
    var itemResponse = itemResponses[j];
    Logger.log('Last response to the question "%s" was "%s"',
               itemResponse.getItem().getTitle(),
               itemResponse.getResponse())
  }
}

有什么方法可以阻止表单以某种逻辑条件提交,例如:仅当某个字段匹配某个条件时才执行表单提交?

最佳答案

Is there any way I can prevent from here the form being submitted with some kind of logic condition, for ex: execute the form submission only if certain field matches some condition?

您可以使用 form rules :

You can create rules that people have to follow when they fill out your form. For example, if you ask for email addresses, you can make sure that people can only submit properly formatted email addresses.

关于 onFormOpen() ,没有以这种方式命名的内置触发器。您可以使用它作为打开时可安装触发器的名称,但它仅在打开表单编辑器时运行,而不是在打开表单 View 时运行。

关于添加自定义日志记录,如果您使用 G Suite 帐户,则可以限制与您的帐户位于同一域的用户的访问权限,但无法进一步限制访问权限。

一种巧妙的替代方法是从表单 View 中获取源代码,并将其“调整”为由 Google Apps 脚本提供服务或将其托管在您自己的网络服务器上。这意味着您将注入(inject)自定义表单规则/数据验证。更简单的方法是使用旧的 Google 表单并复制/粘贴表单的源代码,但也可以使用 UrlFetch。

另一种选择是使用 Google Apps 脚本中的 HtmlService 服务来创建和提供表单,这实际上可以让您完全控制表单行为。请参阅Forms - HTML Service: Communicate with Server Functions

相关:

关于https://webapps.stackexchange.com

关于javascript - 如何向 Google 表单添加登录信息以供用户填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43266869/

相关文章:

javascript - javascript for 循环中的 DispatchEvent

google-apps-script - Google App Script Execution API 的正确范围?

google-apps-script - 使用 Google Apps 脚本将 Google 表单问题添加到表单的特定部分

javascript - 如何将电子表格中的所有数据捕获到谷歌表单

javascript - 代码运行速度太慢

javascript - 如何在回答特定的 Google 表单项目时发送批准人电子邮件

javascript - Google Apps 脚本预填写表单 - 无法编辑表单

javascript - 如何更改谷歌折线图的外观

javascript - 三.js |将matrixAutoUpdate = false应用于场景中的所有网格

javascript - 为什么 ngModel 不触发 writevalue 方法中的变化检测?