【问题标题】:How do I delete form response of google form at runtime?如何在运行时删除谷歌表单的表单响应?
【发布时间】:2019-01-09 07:56:32
【问题描述】:

我有两种形式:form1 和 form2

我有一个条件,在提交 form2 后,用户必须提交 form1。但是,如果用户提交 form1 而不提交 form2,那么我想同时删除它的响应,因为我不想在我的电子表格中输入该条目。如何防止用户提交表单,或者有没有办法在运行时删除响应,这样提交时就没有任何条目?

【问题讨论】:

  • 看看onFormSubmit trigger。由于您没有共享任何代码,因此我们无法在这里为您提供真正的帮助。
  • 您无法使用代码删除表单中的个别回复。您可以使用代码删除所有响应,但不能只删除一个响应。如果您想要删除电子表格中的响应,那么您需要找到刚刚保存的行。您可以删除电子表格中最后找到的行,但如果您有多个用户同时快速连续提交表单,则删除错误行可能会出现问题。您需要电子表格中的 On Form Submit 功能。获取值并将它们与最后一行进行比较,如果它们匹配,则删除该行。
  • 但是,还有一个问题,如果两个人提交的数据完全相同。因此,您可能希望收集用户电子邮件地址并比较电子邮件地址以确保您删除了正确的行。
  • 谢谢@SandyGood。当多个用户一次提交表单并且两个用户同时提交表单时,就会出现我应该删除哪条记录的问题。正是我找到了您上面所说的相同解决方案,如果我使用 getActiveUser() 方法,那么该方法可以区分两个用户和行,并且我可以轻松删除该特定行。但是,如果用户通过隐身模式填写表单,或者用户从其他浏览器(如 Mozilla、UC 浏览器或 Opera)填写表单,那么有可能呢?
  • @Casper 我无法上传代码。这是非常大的代码。两个模块很大,无法上传代码。

标签: google-apps-script google-sheets google-forms


【解决方案1】:

您现在可以删除单个表单项响应:请参阅此处。 https://developers.google.com/apps-script/reference/forms/form#deleteallresponses 删除响应(响应 ID) 从表单的响应存储中删除单个响应。此方法不会删除存储在外部响应目标(如电子表格)中的响应副本,但会从表单的摘要视图中删除响应。可以使用 FormResponse.getId() 检索响应 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多