在WebApp中使用ScriptDb
时,任何人都可以访问该Triggers
并在该WebApp中作为访问用户与WebApp
一起运行,似乎无法正确确定用户。< / p>
Anyone
的Google Apps脚本,as the accessing user
正在运行ScriptApp.newTrigger("myfunc").timeBased().everyMinutes(1).create();
myfunc
函数var q = {
user: Session.getActiveUser().getEmail()
};
result = db.query(q).sortBy('when', db.ASCENDING);
是:
result
从触发器访问myfunc
时,{{1}}似乎是空的。
触发器中的活动用户不应该是安装它的那个用户吗?例如。用户在首次授权时访问WebApp?
答案 0 :(得分:2)
Session.getEffectiveUser方法按预期返回正确的用户电子邮件。由于脚本从触发器运行时,没有人使用它“活动”。始终设置“有效”用户,因为它是脚本在“下”运行的帐户。这是一个示例Web应用程序,它通过电子邮件发送主题和正文中的预期电子邮件地址。
function doGet() {
var trigger = ScriptApp.newTrigger("testTrigger").timeBased().everyMinutes(1).create();
var app = UiApp.createApplication();
app.add(app.createLabel("test"));
return app;
}
function testTrigger(e) {
MailApp.sendEmail("xxx@sample.com", "Subject: " + Session.getEffectiveUser().getEmail(), "Body: " + Session.getEffectiveUser().getEmail());
}