1

ScriptDb誰でもアクセスできる WebApp 内からアクセスするユーザーとして動作する WebApp 内からと、その WebApp 内から一緒に使用すると、Triggersユーザーを正しく判別できないように見えます。

  1. Google Apps ScriptWebAppAnyone実行について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 に答える