1

私の生徒は全員Googleアカウントを持っていますが、使用するメールは異なります(john@hotmail.comなど)。成績スプレッドシートから、ウェブアプリのユーザーのメールアドレスを含む行を取得するウェブアプリを作成して、各生徒にのみ表示されるようにしました。彼または彼女の成績。そのWebアプリは次を使用します:Session.getActiveUser()。getEmail()

これは、スクリプトと同じドメインのユーザーに対してのみ機能します。スクリプトをwebappユーザーとして実行する必要があります(これは問題ありません。学生はこれまでのところ私を信頼しています!)。その制限は次のとおりです。

現在のユーザーを説明するUserオブジェクトを返します。制限付き特権の実行(onOpenまたはonEditへの応答など)では、ユーザーとスクリプト所有者の両方が同じドメインの一部である場合にのみ、アクティブなユーザーのIDを返します。これは、電子メールアドレスを公開したくない消費者ユーザーのプライバシーを保護するためです。

スクリプトは機能しますが、成績表をスクリプトに直接配置し、スプレッドシートを更新するたびにWebアプリを更新する必要があります。うん!

成績スプレッドシートを共有できません。共有すると、お互いの成績が表示されるためです。だから今、私は他の回避策をブレインストーミングしています。

これが1つの例です:

  1. 2つ目のスプレッドシートを共有し、成績を暗号化する更新機能を使用して、スプレッドシートから成績をコピーします。Webアプリは、共有スプレッドシートからデータを吸い上げて復号化します。これで、必要なのはスプレッドシートの簡単な更新だけです。Webアプリを再公開する必要はありません。(おそらく少しスクランブリングを伴うbase64encodeのようないくつかの単純な暗号化オプションがあります...?)

  2. Webアプリを自動的に更新して再公開する方法を見つけてください。(その方法がわかりません。)

  3. ????

助言がありますか?

PS:1が実行可能と思われる場合、単純な暗号化コードに関するいくつかの提案はありますか?

4

3 に答える 3

2

少しスクランブリングを伴うbase64encodeのような、いくつかの単純な暗号化オプションがあります...?

はい、GASにはBase64アルゴリズムを使用してエンコード/デコードする関数があります-Utilities.base64Encode 、Utilities.base64Decodeです、。を使用してもオプションではないと思います。学生はとても賢いです。私の意見は、暗号化アルゴリズムのJavaScript実装、たとえばBlowfishを使用することです。JavaScriptには多くの実装があります(ここここ)。これらの実装は、変更なしで、またはわずかな変更を加えて、GAS環境で機能する必要があります。ソースコードをコピーしてGASエディタに貼り付けるだけで十分です。a little scrambling

于 2012-10-16T11:42:33.037 に答える
1

「スクリプトは機能しますが、成績表をスクリプトに直接入れて、スプレッドシートを更新するたびにWebアプリを更新する必要があります」と言う理由がわかりません。

たとえば、フレックステーブルを使用して、スプレッドシートの一部を表示するWebアプリを作成するのは非常に簡単です。アプリの各インスタンスにはユーザー関連のコンテンツが自動的に含まれ、必要なものを取得するにはマスタースプレッドシートを更新するだけで済みます。なぜこのためにデータをエンコードしたいのかわかりません...グーグルログインによるユーザー識別で十分だと思いますね。 このようなWebアプリの例を次に示します。表示される番号は、マスタースプレッドシートの特定の列から取得されます(この公開コピーでは、承認プロセスを回避するためにアプリを「私」として実行するように設定しましたが、実際にはすべてのユーザーが識別されます彼のデータのみが表示されます)。

スプレッドシート自体とコードはここで表示できます。さらに情報が必要な場合は、遠慮なく戻ってきてください。

于 2012-10-16T08:44:15.643 に答える
0

シートをscriptDBと同期するオプションはありますか?次に、user=loginIDであるDBにクエリを実行します

于 2012-10-16T17:23:52.847 に答える