为了账号安全,请及时绑定邮箱和手机立即绑定

如何从同一个onFormSubmit触发器获取多个不需要的事件块?

如何从同一个onFormSubmit触发器获取多个不需要的事件块?

斯蒂芬大帝 2019-09-06 16:21:56
我今天早上创建了一个问题表单,因为我想为自己查看事件块。然而,这个过程对我来说意想不到。我的描述如下:我正在使用以下代码记录onFormSubmit事件:function testFormSubmission(e) {  var lock=LockService.getUserLock();  try{      if(lock.tryLock(30000)) {      var ss=SpreadsheetApp.getActive();      var sh=ss.getSheetByName('LogSheet');      var tA=[Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"d/M/yyyy HH:mm:ss")];      tA=tA.concat(e.values);      tA.splice(tA.length-1,1,e.triggerUid,e.range.rowStart,e.range.columnEnd,JSON.stringify(e.values));      sh.appendRow(tA);      lock.releaseLock();    }  }  catch (e){throw("Couldn\'t get lock for 30 seconds");return;};}    我的电子表格中有两张图片如下:在e.values中实际上只有两列,一个是日期,一个是问题的答案,即“绿色”或“蓝色”。空白列来自于我从三个问题开始并收集电子邮件的事实,但为了简单起见我决定删除其中两个,因为我自己生成了提交。无论如何,在C列中没有绿色或蓝色的响应就不应该存在。 J列很简单JSON.stringify(e.values),似乎暗示e的值不正确......我想?是/否所以我的问题是日志表中不需要的附加行是从哪里来的?我更新了我的标题问题,因为我认为我没有多次提交,否则我希望在表单响应1表中有多行。对于您的信息,LogSheet中的列H是rowStart,因此很容易找出表单响应1中的哪一行相关联。
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我认为您的代码证明某些触发器是虚假的和不需要的,因此Google不应该生成它们。我在类似问题上向Google提交了一个反馈项目。

在我不需要的触发器中,我只得到e.range.getRow()来确定哪一行发生了变化,然后转到该行进行所需的计算。在我的情况下,该行包含所有虚假触发器的正确信息(可能是因为第一个正确记录了电子表格中的数据)。

你的代码是一个很好的后盾来防止它,但我有太多的形式和触发器来掩盖。将此代码放在所有这些地方将是一件痛苦的事。让我们希望谷歌尽快解决这个问题,我们不会再看到任何虚假的触发因素。


查看完整回答
反对 回复 2019-09-06
?
不负相思意

TA贡献1777条经验 获得超10个赞

我们在这个问题上已经看到了几个问题,因此我决定将自己构建成一个简单的形式。一般来说,我不使用Google表单,因为标准的html表单作为webapps更加灵活。但我希望为那些不喜欢使用webapp路由的用户找到问题的解决方法。

查看完整回答
反对 回复 2019-09-06
  • 3 回答
  • 0 关注
  • 562 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信