我已经生成了代码应用程序脚本 https://stackoverflow.com/questions/38231665/changing-the-owner-of-google-spreadsheet-for-sending-emails-with-app-script/38236937#38236937为了在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这工作正常。
现在我正在将我的谷歌电子表格和应用程序脚本分享给另外两个人(例如:PersonA,PersonB)。因此,我希望任何人在谷歌电子表格上更改任何内容都将在他/她自己的帐户下发送电子邮件。例如:[我们所有人都需要在谷歌电子表格本身内进行编辑,而不需要转到“当前网络应用程序网址”,(谢谢卡梅伦·罗伯茨 https://stackoverflow.com/users/1666569/cameron-roberts澄清一下]如果PersonA更改了任何内容,那么将在PersonA的帐户下发送一封电子邮件,如果PersonB更改任何内容,则会在PersonB的帐户下发送一封电子邮件。
我根据建议做了一些事情用户2970721 https://stackoverflow.com/users/2970721/user2970721 and 卡梅伦·罗伯茨 https://stackoverflow.com/users/1666569/cameron-roberts。我将“部署Web应用程序”调整为“访问Web应用程序的用户”。例如:
我还要求 PersonA 和 Person 在他们的帐户下执行相同的操作,并确保他们至少触发了一次脚本。例如:
我的问题是,在我完成上述所有这些操作后,无论谁在谷歌电子表格上更改任何内容,电子邮件总是从 PersonB 的帐户发送(我最好的猜测是我搞砸了一些东西,而 PersonB 是最后一个触发脚本的人) )。
我、PersonA 和 PersonB 的“项目版本”是否需要不同,或者我需要更改其他什么内容?任何帮助将不胜感激!
首先,您的项目版本不需要对每个用户都不同。
我假设您正在使用 On Change 事件,而不是网络应用程序。如果是这种情况,您应该完全禁用 Web 应用程序,因为不需要它。
当 PersonA 创建“更改时”触发器时,任何用户(例如 PersonA 或 PersonB)编辑电子表格时都会触发该触发器。当它被触发时,代码将作为 PersonA 执行,因为 PersonA 创建了触发器。因此,电子邮件将从 PersonA 的帐户发送。
对于您描述的场景,PersonA 和 PersonB 都创建了 OnChange 触发器并授权了脚本。我希望从创建触发器的两个帐户发送电子邮件。
要从进行编辑的帐户仅发送一封电子邮件,我认为您需要进行检查以确定进行编辑的用户是否与脚本运行权限下的用户匹配。我以前从未这样做过,并且文档并没有真正明确说明是否可能。
尝试检查更改事件中包含的用户对象(例如 e.user),并查看该电子邮件地址是否反映了进行编辑的不同用户。
如果是,您可以将其与有效用户进行比较,如果匹配则发送电子邮件。
https://developers.google.com/apps-script/reference/base/user https://developers.google.com/apps-script/reference/base/user
https://developers.google.com/apps-script/reference/base/session#getEffectiveUser() https://developers.google.com/apps-script/reference/base/session#getEffectiveUser()
最后,仅在电子邮件主题中包含进行编辑的人员的地址,然后从一个帐户发送所有电子邮件可能会更简单。这样您就知道谁进行了编辑,但不需要让每个用户都创建触发器并进行所有额外检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)