【发布时间】:2020-06-04 17:02:05
【问题描述】:
我需要获取访问网络应用程序的用户的电子邮件。该网络应用程序嵌入在谷歌网站中。 我知道如何通过以下方式做到这一点:
var email = Session.getActiveUser().getEmail();
但是,这需要用户授予脚本权限,并且权限消息非常可怕:它允许代表用户发送电子邮件、修改他/她的任何 google 表格等等。
有没有办法避免仅仅为了获取用户电子邮件而获得如此广泛的权限?
更新:我的脚本也需要更新工作表,但不必由用户更新。但是,我需要用户自己运行应用程序来获取他们的电子邮件。
【问题讨论】:
-
嗯,当然可以 - 毕竟,您的应用程序似乎对用户的行为表现得更多,而不仅仅是请求访问电子邮件(您可能使用了
SpreadsheetApp和GmailApp/MailApp)。getActiveUser()所需的唯一范围是userinfo.email。除非您将您的应用程序部署为“像我一样运行”,否则您必须告诉您的用户他们需要做出有意识的决定是否信任您的应用程序所需的所有信息。请记住,通过这样做,该应用将代表您采取行动并使用您的配额 -
根据您所做的工作,您可以通过手动编辑您的 appsscript.json 文件来利用更有限的范围。但您可能不会删除所有可怕的权限警告。
-
您实际上是对的,我还需要根据选择更新工作表(但我可以以我而不是用户的身份写回工作表)。虽然没有发送电子邮件。所以我需要以用户而不是我的身份运行脚本的唯一原因就是获取他们的电子邮件(这样我就可以根据他们的身份只显示很少的信息)
标签: google-apps-script google-oauth