Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Session.getActiveUser().getEmail()从电子表格分发成绩的变通方法_Google Apps Script - Fatal编程技术网

Google apps script Session.getActiveUser().getEmail()从电子表格分发成绩的变通方法

Google apps script Session.getActiveUser().getEmail()从电子表格分发成绩的变通方法,google-apps-script,Google Apps Script,我的学生都有谷歌账户,但使用不同的电子邮件(比如john@hotmail.com).我试图编写一个网络应用程序,从我的成绩电子表格中获取该网络应用程序用户的电子邮件地址,这样每个学生都只能看到自己的成绩。webapp使用的会话:Session.getActiveUser().getEmail() 这只适用于与脚本位于同一域中的用户,我必须以webapp用户的身份运行脚本(这没关系——我的学生非常信任我!)。这是一项限制: 返回描述当前用户的用户对象。在里面 有限权限执行(例如响应onOpen或

我的学生都有谷歌账户,但使用不同的电子邮件(比如john@hotmail.com).我试图编写一个网络应用程序,从我的成绩电子表格中获取该网络应用程序用户的电子邮件地址,这样每个学生都只能看到自己的成绩。webapp使用的会话:Session.getActiveUser().getEmail()

这只适用于与脚本位于同一域中的用户,我必须以webapp用户的身份运行脚本(这没关系——我的学生非常信任我!)。这是一项限制:

返回描述当前用户的用户对象。在里面 有限权限执行(例如响应onOpen或 onEdit),我们只返回活动用户的身份,如果 用户和脚本所有者是同一域的一部分。这是为了 保护消费者用户的隐私,他们可能不想要他们的电子邮件 地址暴露

我的脚本可以工作,但我必须将成绩表直接放在脚本中,并在每次更新电子表格时更新webapp。是的

我无法共享我的成绩电子表格,因为这样他们就会看到彼此的成绩。因此,现在我正在头脑风暴其他解决办法

以下是一个例子:

  • 共享第二个电子表格,使用加密成绩的更新功能从我的电子表格复制成绩。webapp从共享电子表格中提取数据并解密。现在,只需对电子表格进行简单的更新即可——webapp不需要重新发布。(有一些简单的加密选项,比如base64encode,可能会有一点混乱…?)

  • 找到一种自动更新webapp并重新发布的方法。(我不知道怎么做。)

  • 有什么建议吗


    PS:如果1看起来可行,一些简单加密代码的建议?

    我不明白你为什么说“我的脚本有效,但我必须将分数表直接放在脚本中,并在每次更新电子表格时更新webapp”

    例如,使用flextable创建一个显示电子表格一部分的webapp非常容易。应用程序的每个实例都会自动包含与用户相关的内容,您只需更新主电子表格即可获得所需内容。我不知道你为什么要对数据进行编码。。。我认为通过谷歌登录的用户身份应该足够了,不是吗? 对于这样的Web应用程序,您看到的数字来自主电子表格中的特定列(对于此公共副本,我将应用程序设置为以“我”的身份运行,以避免授权过程,但实际上每个用户都被识别,并且只看到自己的数据)

    电子表格本身和代码是,如果您需要更多信息,请随时返回

    有一些简单的加密选项,比如base64encode,可能会有一点混乱


    是的,GAS具有使用Base64算法进行编码/解码的功能,但我认为,即使有一点加扰,它也不是一个选项。学生们很聪明。我的意见是使用加密算法的JavaScript实现,例如。它有许多在JavaScript(和)上的实现。这些实现应在气体环境中工作,无需任何更改或稍作修改。将源代码复制并粘贴到GAS编辑器就足够了。

    是否可以将工作表与scriptDB同步?
    然后查询数据库,其中user=loginID

    谢谢!会的(学生们在这些事情上通常比我聪明…)谢谢!我认为你是对的——学生们总是比我聪明(谢天谢地)。但从代码上看,编码看起来有点令人望而生畏。尽管如此,如果代码没有经过太多调整就可以使用,那么就应该可以了。(对密码学一无所知,我确实发明了一些简单的置乱算法,但我猜任何人都可以绕过它。尽管如此,如果我真的想到了什么,我还是会把它贴在这里……并且在一些密码学论坛上,只是出于好奇。)(哎呀,我对评论功能有点纠结……)你说:我将应用程序设置为以“我”的身份运行,以避免授权过程,但实际上,每个用户都被识别,只看到自己的数据“。我试着这么做,但没有成功。如果你的应用程序可以显示在顶部的用户电子邮件,我会非常感兴趣。到目前为止,我只看到一对排他性的选择:webapp以我的身份运行,而我看不到用户的电子邮件,或者webapp以用户的身份运行,而应用程序无法读取我的电子表格。到目前为止,我还没有看到第三种选择,这就是为什么我将电子表格信息放在webapp中的原因。谢谢你的反馈!您必须将应用程序设置为“访问应用程序的用户”,将电子表格设置为“具有链接的任何人都可以编辑”(在我的情况下,必须是读/写)。这并不意味着任何人都可以打开工作表本身,因为ID仍然未知。如果你想让我更改我的应用程序参数供你测试,或者如果你自己做,你可以复制as和代码。对不起,这里输入错误:我的意思是你可以复制SS和代码。很有趣!我试试看。您提到的关键是让任何人都可以通过该链接访问它。。。。这就是我一直在寻找的解决方案。我会让你知道我的情况。谢谢好啊这就成功了——非常感谢你向我指出这一点。对于我的案例,有一个小小的调整:共享电子表格链接只需是视图即可。编辑是没有必要的,这是一件好事,只是为了以防万一,一个学生奇迹般地(接近完美的概念)找到了与表格的链接。再次,非常感谢您的帮助和分享您的工作。我还没有使用scriptDB功能。我会调查的。谢谢你的建议!