2016-08-28 18 views
1

私が働いている会社の内部で使用するための小さな予約Webアプリを作成する必要があります。私はGoogle Apps Script(GAS)を試してみることにしました。要するに、ユーザは、リスト内の機器を選択し、使用予定の日付と身分証明書と共に提出することができなければなりません(この小型システムは完全CRUDを実装しなければなりません)。インタフェースは、アプリはちょうど会社のドメインのメンバにアクセスすることができますWebアプリケーション Web Appへのアクセス

  • として公開ガスで作られた、しかし、私はデータベース
  • として

    • Googleスプレッドシート:

      環境今私の個人的なアカウントでそれを開発する。

    開発環境では、すべて正常に動作します。それから、私はWebアプリケーションとしてプロジェクトを展開します(Execute app as:Me;誰がアプリケーションにアクセスできますか:誰でも)。誰かがリンクにアクセスすると、ユーザー情報(Session.getActiveUser()。getEmail())を取得できません。常に開発者情報(私の情報)を検索します。 「アプリケーションを実行する」を「ユーザーがアプリケーションにアクセスする」に切り替えると、アプリケーションはデータベースの役割を果たすスプレッドシートにアクセスできなくなります。開発環境でこれはうまく動作します。

    残りのウェブアプリは正常に動作しています。私はちょうど自動的に(この情報を入力するようにユーザーに依頼するのではなく)予約を行った人のアイデンティティ(電子メール)を取得して記録したがっていました。

    人々がアクセスできるように設定する必要はありますか?

    ありがとうございます。

    [編集1]:状況は少し変わりました。私はいくつかのテストを行い、プロジェクトの新しいバージョンとして保存したときに、配備されたWebアプリケーションが更新されるようです。とにかく、私はまだアクティブなユーザーの電子メールを取得できません。 Session.getActiveUser()。getEmail()は空の文字列を返すようになりました。

    [編集2]: Sujay Phadkeの回答bellowに続いて、私は同社の環境にWebアプリケーションを移行しようとしました。それは魅力のように働いた。

    ジュリアーノ

  • 答えて

    1

    これはよくここに文書化されています:Webアプリケーションの権限は、「私として実行」として設定されている場合getActiveUser

    、返されたユーザーID文字列が空になると思われます。また、そこに記載されているように、あなたの特定のドメイン権限に依存します。

    +0

    @Sujay Phadkeのリンクを読んだだけです。 "(...)単純なonOpen(e)のように、そのユーザーの承認なしでスクリプトを実行できるようなコンテキストでは、ユーザーの電子メールアドレスは使用できません。またはonEdit(e)トリガー、Googleスプレッドシートのカスタム機能**、または「私として実行」**にデプロイされたWebアプリケーション**(つまり、ユーザーの代わりに開発者によって承認されたもの)**ただし、開発者とユーザーが同じGoogle Apps for Businessドメイン** ._ "に属している場合は適用されません。 – jpavel

    +0

    私はTIの管理者に必要な場合にセキュリティポリシーを変更するように依頼することができるので、会社の環境でいくつかのテストを行います。ありがとうございました。 – jpavel

    +2

    あなたのドメインではうまくいくはずですが、問題なくGoogle Apps Educationドメインで同じ設定を使用します。 webappは私として実行され、私は 'Session.getActiveUser()。getEmail()'を使ってエンドユーザIDを取得します –

    関連する問題