私の生徒は全員Googleアカウントを持っていますが、使用するメールは異なります(john@hotmail.comなど)。成績スプレッドシートから、ウェブアプリのユーザーのメールアドレスを含む行を取得するウェブアプリを作成して、各生徒にのみ表示されるようにしました。彼または彼女の成績。そのWebアプリは次を使用します:Session.getActiveUser()。getEmail()
これは、スクリプトと同じドメインのユーザーに対してのみ機能します。スクリプトをwebappユーザーとして実行する必要があります(これは問題ありません。学生はこれまでのところ私を信頼しています!)。その制限は次のとおりです。
現在のユーザーを説明するUserオブジェクトを返します。制限付き特権の実行(onOpenまたはonEditへの応答など)では、ユーザーとスクリプト所有者の両方が同じドメインの一部である場合にのみ、アクティブなユーザーのIDを返します。これは、電子メールアドレスを公開したくない消費者ユーザーのプライバシーを保護するためです。
スクリプトは機能しますが、成績表をスクリプトに直接配置し、スプレッドシートを更新するたびにWebアプリを更新する必要があります。うん!
成績スプレッドシートを共有できません。共有すると、お互いの成績が表示されるためです。だから今、私は他の回避策をブレインストーミングしています。
これが1つの例です:
2つ目のスプレッドシートを共有し、成績を暗号化する更新機能を使用して、スプレッドシートから成績をコピーします。Webアプリは、共有スプレッドシートからデータを吸い上げて復号化します。これで、必要なのはスプレッドシートの簡単な更新だけです。Webアプリを再公開する必要はありません。(おそらく少しスクランブリングを伴うbase64encodeのようないくつかの単純な暗号化オプションがあります...?)
Webアプリを自動的に更新して再公開する方法を見つけてください。(その方法がわかりません。)
????
助言がありますか?
PS:1が実行可能と思われる場合、単純な暗号化コードに関するいくつかの提案はありますか?