Email 使用Google应用程序脚本从不同帐户发送电子邮件

Email 使用Google应用程序脚本从不同帐户发送电子邮件,email,google-apps-script,google-sheets,Email,Google Apps Script,Google Sheets,我已经用生成了代码,以便在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这很好 现在我将我的谷歌电子表格和应用程序脚本分享给另外两个人(例如:PersonA,PersonB)。因此,我希望在谷歌电子表格上更改任何内容的人都将以自己的帐户发送电子邮件。例如:[我们所有人都需要在谷歌电子表格中进行编辑,而不必访问“当前web应用程序url”(感谢澄清)]如果PersonA更改了任何内容,则会在PersonA的帐户下发送电子邮件,如果PersonB更改了任何内容,则会在PersonB的帐户下发送电

我已经用生成了代码,以便在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这很好

现在我将我的谷歌电子表格和应用程序脚本分享给另外两个人(例如:PersonA,PersonB)。因此,我希望在谷歌电子表格上更改任何内容的人都将以自己的帐户发送电子邮件。例如:[我们所有人都需要在谷歌电子表格中进行编辑,而不必访问“当前web应用程序url”(感谢澄清)]如果PersonA更改了任何内容,则会在PersonA的帐户下发送电子邮件,如果PersonB更改了任何内容,则会在PersonB的帐户下发送电子邮件

我根据和的建议做了一些事情。我将“部署web应用”调整为“用户访问web应用”。例如:

我还要求PersonA和PersonB在他们的帐户下执行同样的操作,并确保他们至少触发了一次脚本。例如:

我的问题是,在我完成上述所有操作后,无论谁在谷歌电子表格上更改任何内容,电子邮件总是从PersonB的帐户中发送(我最好的猜测是我搞糟了一些事情,PersonB是最后一个触发脚本的人)


我、PersonA和PersonB的“项目版本”是否需要不同,或者我需要更改的其他内容是否需要不同?非常感谢您的帮助!

首先,您的项目版本不需要对每个用户都不同

我假设您使用的是On Change事件,而不是web应用程序。如果是这种情况,您应该完全禁用web应用程序,因为它不是必需的

当PersonA创建更改触发时,任何用户(如PersonA或PersonB)编辑电子表格时都会触发。触发时,代码将作为PersonA执行,因为PersonA创建了触发。因此,电子邮件将从PersonA的帐户发送

对于您描述的场景,其中PersonA和PersonB都创建了OnChange触发器并授权了脚本。我希望从创建了触发器的两个帐户发送电子邮件

要仅从进行编辑的帐户发送一封电子邮件,我认为您需要进行检查,以确定进行编辑的用户是否与脚本正在运行的权限下的用户匹配。我以前从未这样做过,文档也没有明确说明这是否可能

尝试检查更改事件中包含的用户对象(例如e.User),并查看该电子邮件地址是否反映了进行编辑的不同用户

如果是,您可以将其与有效用户进行比较,如果他们匹配,则发送电子邮件


最后,将编辑人的地址包含在您的电子邮件主题中,并让所有电子邮件从一个帐户发送可能更简单。这样您就知道是谁进行了编辑,但不需要让每个用户都创建一个触发器并进行所有额外的检查。

您的用户是否将此作为web应用程序访问以进行更新(转到“当前web应用url”),或者他们是否在工作表本身中编辑?如果他们在工作表本身中编辑,您不需要将其部署为web应用。请在您的问题中澄清。在您之前的问题中,我假设您使用的是“更改中”trigger,而user2970721假设您使用的是一个web应用程序。通常是一个或另一个。您好Cameron,我们所有人都需要编辑google电子表格中的内容,而不必访问应用程序url,感谢您指出这一点,因为我刚刚在问题中对其进行了更改。是的,我正在使用“更改中”触发器。因为我需要在谷歌电子表格中编辑,这是否意味着我需要删除PersonA&B的所有web应用程序内容,并让他们使用“更改”设置触发器?感谢您的帮助!是的,删除web应用程序内容并使用onChange触发器。嗨,谢谢您的完整答案!我一直在测试匹配的内容(activeUser vs.授权脚本的用户)但我仍在学习中。我会让每封电子邮件都从同一个帐户发送,这很简单。同时假设我选择PersonA作为唯一的发送者,PersonB和我仍然能够触发“发送电子邮件”吗当角色注销时?很乐意提供帮助。是的,无论创建它的用户是否登录,触发器都将执行。