dポイントプレゼントキャンペーン実施中!

googleappsのフォームのsubmitのイベント処理に
スクリプトを書いていてそこで
ログインユーザのe-mailアドレスを取得したいのです


var to = Session.getActiveUser.getEmail()

これでテストしてみたところ自分のe-mailアドレスが取得できたので
できたと思ってほかの人にフォーム入力をしてもらったところ
取得した値は私のe-mailアドレスでした・・・・
これってスクリプトを作成者の情報を取得する!?


ためしにgetEffectiveUser メソッド,getUserメソッドも試してみましたが
同じ結果です

googleappsフォームを入力した人のe-mailを取得するスクリプトはどのようにしたらいいでしょうか?

A 回答 (2件)

フォームの設定でログインを強制しても動作は同じですか? まずはそれを確認して下さい。

フォームは、他のスプレッドシートやドキュメントなどのように利用を許可された人間だけがログインして使うのでなく、誰でもアクセスできるので、そのままではActiveUserがとれないのかも知れません。ログインを強制するよう設定してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/06/21 05:56

>取得した値は私のe-mailアドレスでした・・・・



これって、どういう形で確認しています? 例えば、Loggerでログ出力させているとかですか。だとすると、例えばスクリプトが動作しておらず、最後に実行した結果が残っているということも考えられますが……。

ユーザーのログイン情報の取得は、基本的にSession.getActiveUser.getEmailでいいはずです。getEffectiveUserは確かdeprectedなので使わないで下さい。

これで取れるはずですが、しかし当たり前ですがログインできてないとスクリプトは正常に動きません。Google Appsユーザーなら、一番上の「フォームの設定」のところに、「このフォームを表示する際に○○へのログインを求める」というチェックがありますので、これをONにしてください。これで、フォームにアクセスすると強制的にログインされます。結果、Session.getActiveUser.getEmailで正常にメールアドレスが取れるようになるはずです。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます

値の確認は自分に向けて取得した値をメールしています
MailApp.sendEmail("自分のメールアドレス", "test", Session.getActiveUser().getEmail());


自分でフォームをサブミットすれば当然メールの本文には自分のメールアドレスがセットされていますが
他の人がフォームを開いてサブミットしてもその人のメールアドレスではなく自分のメールアドレスが
セットされています

お礼日時:2014/06/19 21:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!