1

ScriptDb从任何人都可以访问的 WebApp 中使用并作为访问用户与Triggers从该 WebApp 中一起运行时,似乎无法正确确定用户。

  1. WebApp用于Anyone运行的Google Apps 脚本as the accessing user
  2. ScriptApp.newTrigger("myfunc").timeBased().everyMinutes(1).create();

其中函数myfunc是:

var q = {
  user: Session.getActiveUser().getEmail()
};
result = db.query(q).sortBy('when', db.ASCENDING);

resultmyfunc从触发器访问时似乎为空。

触发器中的活动用户不应该是安装它的用户吗?例如,第一次授权时访问 WebApp 的用户?

4

1 回答 1

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());
}
于 2012-10-29T11:36:50.023 回答