2016-07-19 41 views
1

发送电子邮件我已经为了用户是否在谷歌电子表格,这是工作的罚款改变了一些值自动发送电子邮件生成与app script代码。来自不同帐户与谷歌应用程序脚本

现在我与应用程序脚本分享我的谷歌电子表格,两个人(例如:人物角色,PersonB)。因此,我希望任何在Google电子表格上更改任何内容的人都将使用他/她自己的帐户发送电子邮件。例如:[我们所有人都需要在谷歌电子表格本身进行编辑,而不必去“当前的网络应用程序网址”(谢谢Cameron Roberts的澄清),如果PersonA改变任何东西,那么电子邮件将在PersonA的账户下发送出去,电子邮件将在PersonB的帐户,如果PersonB改变任何东西送出

我并基于从user2970721Cameron Roberts意见东西,我调整“部署Web应用程序”的“用户访问Web应用程序”,例如:。

enter image description here

我也问PERSONA & PersonB做好自己的ACCO在相同并确保他们至少触发了脚本一次。例如:

enter image description here

我的问题是,我已经做了毕竟这些上面提到的,不管是谁改变了在谷歌电子表格什么,电子邮件总是从PersonB的帐户发送出去(我最好的猜测是我搞砸了而PersonB是触发剧本的最后一位)。

是否“项目版本”需要为我不同,人物角色,和PersonB,或其他任何东西,我需要改变?任何帮助将不胜感激!

+0

您的用户是否以访问此应用程序的方式进行更新(通过转到“当前的Web应用程序url”),还是在工作表本身内进行编辑?如果他们在工作表本身进行编辑,则不需要将其部署为Web应用程序。 请在您的问题中澄清。在您之前的问题中,我假定您使用的是“On Change”触发器,而user2970721假设您使用的是Web应用程序。通常它会是一个或另一个。 –

+0

嗨卡梅隆,我们所有人都需要编辑谷歌电子表格中的东西,而不必去应用程序的网址,感谢指出它,因为我只是在我的问题中改变它。是的,我正在使用“更改”触发器。由于我需要在Google电子表格中进行编辑,是否意味着我需要删除PersonA&B的所有Web应用程序,并让他们通过“更改”设置触发器?感谢您的帮助! –

+0

是放弃网络应用程序的东西,只使用onChange触发器。 –

回答

2

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

我假设你使用On Change事件,而不是Web应用程序。如果是这样,您应该完全禁用WebApp,因为它不是必需的。

当人物角色创建一个在改变触发,将被随时触发的任何用户(例如角色或PersonB)编辑电子表格。当它被触发时,代码将作为PersonA执行,因为PersonA创建了触发器。因此,电子邮件将从PersonA的帐户发送。

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

要只发送一个电子邮件,从做编辑的帐户,我想你需要做一个检查,以确定谁做编辑的用户权限下谁的权力运行脚本的用户相匹配。我从来没有这样做过,文档没有真正清楚它是否可能。

尝试检查用户对象(例如e.user)包含Change事件,看看是否该电子邮件地址是反映不同用户进行编辑。

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

https://developers.google.com/apps-script/reference/base/user

https://developers.google.com/apps-script/reference/base/session#getEffectiveUser()

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

+0

嗨,谢谢你的回答!我一直在测试匹配的东西(activeUser与授权脚本的用户),但我仍在学习。我会让每个电子邮件都从同一个帐户发送,这很容易。另外假设我选择PersonA作为唯一的发件人,当PersonA注销时PersonB和我仍然能够触发“发送电子邮件”? –

+0

乐意帮忙。是的,无论创建它的用户是否登录,触发器都会执行。 –

相关问题