• 締切済み

googleapps ログインユーザの取得

googleappsのフォームのsubmitのイベント処理に スクリプトを書いていてそこで ログインユーザのe-mailアドレスを取得したいのです var to = Session.getActiveUser.getEmail() これでテストしてみたところ自分のe-mailアドレスが取得できたので できたと思ってほかの人にフォーム入力をしてもらったところ 取得した値は私のe-mailアドレスでした・・・・ これってスクリプトを作成者の情報を取得する!? ためしにgetEffectiveUser メソッド,getUserメソッドも試してみましたが 同じ結果です googleappsフォームを入力した人のe-mailを取得するスクリプトはどのようにしたらいいでしょうか?

みんなの回答

noname#247307
noname#247307
回答No.2

フォームの設定でログインを強制しても動作は同じですか? まずはそれを確認して下さい。フォームは、他のスプレッドシートやドキュメントなどのように利用を許可された人間だけがログインして使うのでなく、誰でもアクセスできるので、そのままではActiveUserがとれないのかも知れません。ログインを強制するよう設定してください。

h0712
質問者

お礼

フォームの設定でログインを強制しても同じ動作でした

noname#247307
noname#247307
回答No.1

>取得した値は私のe-mailアドレスでした・・・・ これって、どういう形で確認しています? 例えば、Loggerでログ出力させているとかですか。だとすると、例えばスクリプトが動作しておらず、最後に実行した結果が残っているということも考えられますが……。 ユーザーのログイン情報の取得は、基本的にSession.getActiveUser.getEmailでいいはずです。getEffectiveUserは確かdeprectedなので使わないで下さい。 これで取れるはずですが、しかし当たり前ですがログインできてないとスクリプトは正常に動きません。Google Appsユーザーなら、一番上の「フォームの設定」のところに、「このフォームを表示する際に○○へのログインを求める」というチェックがありますので、これをONにしてください。これで、フォームにアクセスすると強制的にログインされます。結果、Session.getActiveUser.getEmailで正常にメールアドレスが取れるようになるはずです。

h0712
質問者

お礼

お返事ありがとうございます 値の確認は自分に向けて取得した値をメールしています MailApp.sendEmail("自分のメールアドレス", "test", Session.getActiveUser().getEmail()); 自分でフォームをサブミットすれば当然メールの本文には自分のメールアドレスがセットされていますが 他の人がフォームを開いてサブミットしてもその人のメールアドレスではなく自分のメールアドレスが セットされています