我的学生都有一个谷歌帐户,但使用不同的电子邮件(如john@hotmail.com)。我试着写一个webapp,从我的成绩电子表格中获取带有webapp用户电子邮件地址的行,以便每个学生只会看到他或她的成绩。该webapp使用:Session.getActiveUser()。getEmail()
这仅适用于与脚本位于同一域的用户,我必须以webapp用户身份运行脚本(这是好的 - 我的学生相信我这么远!)。这是限制:
返回描述当前用户的User对象。在 有限特权执行(例如响应onOpen或 onEdit),我们只返回活动用户的身份 用户和脚本所有者属于同一个域。这是为了 保护可能不想要他们的电子邮件的消费者用户的隐私 地址暴露。
我的脚本有效,但我必须将成绩表直接放在脚本中,并在每次更新电子表格时更新webapp。 Yeck!
我无法分享我的成绩电子表格,因为他们会看到对方的成绩。所以现在我正在集思广益其他解决方法。
以下是一个例子:
分享第二个电子表格,使用加密等级的更新功能从我的电子表格中复制成绩。 webapp从共享电子表格中提取数据并解密。现在只需要一个简单的电子表格更新 - 不需要重新发布webapp。 (有一些简单的加密选项,比如base64encode可能有点争吵......?)
找到一种自动更新webapp并重新发布的方法。 (不知道该怎么做。)
????
有什么建议吗?
PS:如果1似乎可行,对简单加密代码有一些建议吗?
答案 0 :(得分:2)
有一些简单的加密选项,比如base64encode可能有点加扰......?
是的,GAS具有使用Base64算法进行编码/解码的功能 - Utilities.base64Encode,Utilities.base64Decode,但我认为,即使使用a little scrambling
,它也不是一个选项。学生非常聪明。我的意见是使用加密算法的JavaScript实现,例如Blowfish。 JavaScript上有许多实现(here和here)。这些实现应该在GAS环境中工作,无需任何更改或进行少量修改。将源代码复制并粘贴到GAS编辑器就足够了。
答案 1 :(得分:1)
我不明白为什么你说“我的脚本有效,但我必须将等级表直接放在脚本中,并在每次更新电子表格时更新webapp”
使用flextable创建一个显示电子表格一部分的webapp非常容易。该应用的每个实例都会自动拥有与用户相关的内容,您只需更新主电子表格即可获得所需内容。我不知道你为什么要为此编码数据...我认为通过谷歌登录的用户身份证明应该足够了,不是吗? {@ 3}}这样的网络应用程序,您看到的数字来自主电子表格中的特定列(对于此公共副本,我将应用程序设置为以“我”运行以避免授权过程,但实际上每个用户都是确定并仅查看他的数据。)
电子表格本身和代码为Here is an example,如果您需要更多信息,请随时回来。
答案 2 :(得分:1)
是否可以将工作表与scriptDB同步? 然后查询用户= loginID
的DB答案 3 :(得分:1)
目前正在开展一个名为gGradebook的项目,它可以完全满足您的需求:http://www.gclassfolders.com/standalone-resources/ggradebook