【问题标题】:How to stop duplicate emails from active users?如何阻止来自活跃用户的重复电子邮件?
【发布时间】:2016-11-15 09:48:21
【问题描述】:


我需要一点指导!

我为 Google 电子表格创建了一个简单的脚本,该脚本旨在在满足特定条件时向用户发送电子邮件,并将该行标记为“已发送电子邮件”;它在 onEdit 触发器上运行并且效果很好。
但是,如果多个启用触发器的用户同时打开工作表,它将从每个帐户发送相同的电子邮件。

我尝试使用:

function onChange(e) {
    if (ROW HASN'T BEEN EMAILED ALREADY) {
       if (3 CELLS IN A ROW HAVE CONTENT) {
           if (Session.getActiveUser().getEmail() == e.user.getUserLoginId()) {
              SEND THE EMAIL
              MARK ROW AS EMAILED
           }
        }
    }
}

因此,只有做出更改的用户才会发送电子邮件,但所有用户仍会发送电子邮件。我已经比较了手动生成的 Session.getActiveUser().getEmail()e.user.getUserLoginId() 的值,理论上它应该可以工作......虽然很明显我做错了什么!

谢谢。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这是一个有点令人困惑的话题,但我相信它运行正常。

    这里有一些细节。

    1. onChange(e) 函数中,e.user 将始终是“拥有”文档的人。查看文档中事件的this page 底部。本质上,您无法确定是哪个用户的更改导致触发器触发。
    2. 当有两个用户各自在onEdit 事件上有一个触发器时,即使只有一个用户打开了电子表格,这两个触发器每次都会运行(基本上该函数运行两次)。但是,根据 #1,您无法在触发函数中运行找出哪个用户的更改导致了 onEdit 事件

    您将不得不重新考虑一下您的工作流程,也许是 timed trigger 每小时检查一次是否有人​​收到电子邮件。另一种选择是只有一个触发器作为文档所有者运行,您可以在那里执行检查逻辑。希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      相关资源
      最近更新 更多