Web 应用程序用户能否安排应用程序脚本触发器在给定时间发送电子邮件?
Can a web app user schedule an apps script trigger to send an email at a given time?
我想知道应用程序脚本是否可能出现以下情况:
- 我部署了一个根据访问它的用户执行的网络应用程序。
- 用户打开已部署的网络应用程序并授权发送电子邮件
- 用户点击一个按钮,触发 google.script.run 调用 Code.gs 中的一个函数,该函数会在预定义的时间创建一个新的基于时间的触发器 运行,它将执行电子邮件发送功能也存储在 Code.gs.
- 在预定义的时间,电子邮件发送功能以创建此基于时间的触发器的用户的名义发送电子邮件。
我可以根据用户操作创建可安装的触发器,但我很难看到如何在电子邮件发送时检索创建定时触发器(以及谁正在执行它)的网络用户的电子邮件地址函数被触发。
Session.getActiveUser().getEmail() 在这种情况下不起作用,除非用户有权访问托管电子邮件发送功能的应用程序脚本项目?
有解决办法吗?
编辑:用户将全部在同一个域中
您是对的,Session.getActiveUser().getEmail()
不能始终从 WebApp
中正确检索用户身份
访问用户身份的解决方法:
-
使用People API (after enabling):
People.People.get("people/me", {personFields: "emailAddresses"}).emailAddresses[0].value
我想知道应用程序脚本是否可能出现以下情况:
- 我部署了一个根据访问它的用户执行的网络应用程序。
- 用户打开已部署的网络应用程序并授权发送电子邮件
- 用户点击一个按钮,触发 google.script.run 调用 Code.gs 中的一个函数,该函数会在预定义的时间创建一个新的基于时间的触发器 运行,它将执行电子邮件发送功能也存储在 Code.gs.
- 在预定义的时间,电子邮件发送功能以创建此基于时间的触发器的用户的名义发送电子邮件。
我可以根据用户操作创建可安装的触发器,但我很难看到如何在电子邮件发送时检索创建定时触发器(以及谁正在执行它)的网络用户的电子邮件地址函数被触发。
Session.getActiveUser().getEmail() 在这种情况下不起作用,除非用户有权访问托管电子邮件发送功能的应用程序脚本项目?
有解决办法吗?
编辑:用户将全部在同一个域中
您是对的,Session.getActiveUser().getEmail()
不能始终从 WebApp
访问用户身份的解决方法:
使用People API (after enabling):
People.People.get("people/me", {personFields: "emailAddresses"}).emailAddresses[0].value