1

我已经以同样的方式设置了一年多的formemailer,但从未遇到过这个问题。我没有更改任何内容,但现在它突然开始在发件人字段中使用我的电子邮件地址发送所有表单回复。我该如何解决这个问题,它发生在我们拥有的 3 种不同形式上。谢谢

4

3 回答 3

1

我认为您看到的问题是由于issue 2004造成的。请在问题上加注星标,以便收到更新通知。FormEmailer 可能是这个错误的受害者

于 2012-10-27T06:41:14.257 回答
1

我自己也遇到过这个问题,我很高兴地说我知道如何解决这个问题,而且它确实涉及一些 javascript 编码

如果您收到电子邮件,这一定意味着您已经设置了自动触发器(时间驱动)并且您已经设置了将电子邮件发送到您的地址的设置(我假设是为了测试?)如果您有电子邮件您要向其发送电子邮件的地址列,该列应该是占位符引用的列。

要停止向自己发送数千封空白电子邮件,您必须调整代码,以便它知道何时触发!原始代码没有说明何时在自动触发器上停止发送电子邮件。

第 209 行:var status = c.fs.getRange(2,1,last-1,1).getValues();

第 209 行在你的监控函数中定义了一个变量。此变量“状态”正在获取指定范围内的值。具体来说,它正在获取当前表单范围。Google 应用程序脚本有 4 种不同的 getRange() 编写方式,本例有 4 个参数,如下所示:getRange(row, column, numRows, numColumns)

原始代码是这样说的,“从我当前的表单中,从第二行和第一列开始,一直到最后一行,并为整个一列(第 1 列)执行所有这些操作”。

但是,如果 B:Z 列的第 2:5 行有一些数据(javascript 中为 2:26),而第 6 行及以后的行没有数据怎么办?您的电子邮件将针对第 2:5 行发送,并且您将在第 1 列(javascript)或第 0 列(excel/google 表)中收到第 6:1000 行左右(无论“最后”是什么)的错误消息;换句话说,A 列将更新数百条错误消息,并且根据您的设置,您可能会收到数百封空白电子邮件!

在 getRange() 的最后一个参数处精确更新第 209 行,您可以在其中指定要收集数据的列数。选择您知道总会有数据的列,例如如果您使用谷歌表单,则选择时间戳列: var status = c.fs.getRange(2,1,last-1, 1 ).getValues() ;

您刚刚设置了一个参考列来检查是否有要通过电子邮件发送的数据!现在,下一个代码是您的 for 循环,它逐行或逐行检查状态。在第 211 行的代码中,您设置了何时运行名为“doIt”的电子邮件函数的条件。

照原样,第 211 行if( status[i][0] === '' )说“如果状态,在第一列,等于空白......然后运行函数 doIt”。但是 A 列不是我的数据所在的列!A 列是我的电子邮件状态和错误消息所在的位置。此条件仅阻止重新发送已发送的电子邮件,或阻止发送出现错误的电子邮件。

这是您的 if 语句在第 211 行的样子:

if( status[i][0] === '' && status[i][YOUR REFERENCE COLUMN] !== '' )
  doIt_(i+2);
if( status[i][0] === '' && status[i][YOUR REFERENCE COLUMN] === '' )
  return;

此语句是说,“如果我的第一列的状态为空白且我的参考列不为空,则运行我的电子邮件功能 doIt...如果我的第一列的状态为空白且我的参考列为空白,则停止 for环形。”

保存您的代码。您刚刚更新了代码以接受自动触发器!设置您的时间驱动触发器并进行试运行!

于 2017-03-24T17:01:10.650 回答
0

谷歌在 CDT 时间 10 月 26 日星期五上午 9:30 左右的某个时间出现了应用引擎故障。我最后一次成功更改名称变量的脚本电子邮件发送是在 2012 年 10 月 25 日晚上 11:33 到 10 月 26 日下午 12:16 之间...

我认为这些事件可能以某种方式相关 - 无论哪种方式,它们都在谷歌的末端......

于 2012-10-29T00:27:49.770 回答