首页 文章

WebApp中的ScriptDb用法

提问于
浏览
1

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

  • Google Apps脚本为 WebApp for Anyone 正在运行 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);

当从触发器访问 myfunc 时, result 似乎为空 .

触发器中的活动用户不应该是安装它的人吗?例如 . 用户在首次授权时访问WebApp?

1 回答

  • 2

    Session.getEffectiveUser方法按预期返回正确的用户电子邮件 . 由于脚本从触发器运行时,没有人使用它 . 始终设置"effective"用户,因为它是脚本运行的帐户"under" . 这是一个示例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());
    }
    

相关问题