質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

5612閲覧

GASのWebアプリケーションでアクセス者の情報を取得するには

anzusan

総合スコア6

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2017/11/09 03:12

###前提・実現したいこと
GASでWebアプリケーションフォームを作りました。
実行権限は作成者自身、公開範囲はURLを知っているドメイン内全員です。

URLを知っている社員は全員アクセスできてしまう為、
このままだとフォームを使用できてしまいます。

そこで、アクセスしたメンバーの情報(名前、メールアドレス)を
取得したいと考えております。
GASでそのような情報は取得できるのでしょうか?

取得のタイミングはアクセスした際またはフォームの送信ボタンが
押されたタイミングのどちらでもかまいません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

実行権限が作成者自身でなく、下図の通りアクセスした各ユーザーであれば、
イメージ説明

下記でメールアドレスを取得できると思うのですが、実行権限を変えることは可能でしょうか?

javascript

1Session.getActiveUser().getEmail();

投稿2017/11/09 07:36

yuiBlue

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anzusan

2017/11/09 07:56

Admin SDK Directory Serviceを利用している為、その設定にしてしまうと一般ユーザでは実行できないと考えております。 アクセスまたは実行したユーザのアドレスが取得できるのであればそこから利用者を絞ることができると考えているのでそのような実装ができるのであればほかの方法でもかまいません。 よろしくお願いします。
yuiBlue

2017/11/09 12:42 編集

背景のご説明ありがとうございます。 そういうことであれば、実行権限は変更できませんね。 作成されたWebフォームの内容を把握していないので、見当違いかもしれないのですが、下記はいかがでしょうか? ・WebフォームはGoogleフォームを使用する(これにより、利用者を絞ることができます)。 ・Admin SDK Directory Serviceのロジックは、上記フォームに紐づくスクリプトに実装する。 ・スクリプトの起動トリガーは「フォーム送信時」で設定する(実施者は作成者のアカウント)。
anzusan

2017/11/10 03:46

早速の返信ありがとうございます。 また、最初の説明が不十分でした。申し訳ございません。 =============== 現在、ドメイン内に所属するグループメンバーの管理を簡単に行いたいと考えております。 そこで、GASを利用して簡単なフォームを作成しました。 フォーム内でいくつか機能を用意してます。 「グループの作成/削除」 「グループへのユーザ追加/削除」 「グループ名やユーザが所属しているグループの検索」 それら項目をボタン(中身の処理はjquery)によってフォームの入力画面の切り替えを行っております。 送信が押下されると入力された値をgasに渡して処理をします。 =============== ご提示いただいた方法であるGoogleフォームで実装しようとすると、 1.機能ごとにフォームを作る必要がある。  ⇒機能ごとにフォームが分かれているから使いたい機能に該当するフォームを探す作業から始まります。また、機能が増えるとフォームも増えます。 2.一つのフォームにすべての機能をつぎ込む必要がある。  ⇒フォーム1つで処理が可能なので1のようにフォームを探すという手間はないものの、入力する必要のない不要な設問までもが画面に表示されてしまうので事前に利用者に対してどの機能が必要な場合はどの設問を使ってください・・・というような説明が必要になってしまう。 前提として利用者が利用しやすい、使いたいと思うような実装を目指しているのでフォームだと満足して使っていただけるイメージがつきません。 わがままなことを言ってしまい申し訳ございませんが 他に実装できるような方法はございませんでしょうか? 是非お力添えいただきたく存じます。
yuiBlue

2017/11/10 06:40

丁寧なご説明、ありがとうございました。 状況について把握できました。 現在の私の知識では、申し訳ないのですが、GASに限定すると解決策が思い浮かびません。 もし、予算があるのなら3rdパーティー製品の利用やGCPでの内製をご検討してみてはいかがでしょうか。 (すでに検討済みでしたらゴメンナサイ)
anzusan

2017/11/10 08:58

ご回答ありがとうございます。 ダメ元でyuiBlue様よりご教示いただきましたコード Session.getActiveUser().getEmail(); をやってみたところ、ユーザのメールアドレスを取得することができました。 次のユーザーとしてアプリケーションを実行:自分 にした場合、Session.getActiveUser().getEmail();だと取得できないと思い込んでおりましたが同じドメイン内なら取得できるのですね・・・ お手数おかけしてしまい申し訳ございません。 案ずるより産むが易しですよね。。 ありがとうございました!
yuiBlue

2017/11/10 10:15

良かったですね!! また、ずっと間違っていた私の知識を是正する機会を提供いただきありがとうございました(恥) こちらこそ勉強になりました。 今回作成されたアプリケーションがユーザにとって、よいソリューションになることを願っております!
guest

0

自己解決

同じドメインユーザなら
ウェブアプリケーション導入時に自分権限で実行していた場合でも
Session.getActiveUser().getEmail();
でユーザ情報が取れるみたいです。

投稿2017/11/10 08:59

anzusan

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問