我有一个用于Google表格的google应用脚本。最近,当我的函数在6分钟内将数据插入电子表格时,遇到了“脚本运行时”限制。我的模态窗口刚刚挂起,在开发控制台中,我得到了“超出最大执行时间”。
经过一些研究,我弄清楚了如何重新实现我的功能,以便它可以批量执行,并且不太可能达到极限。
但是,在这一点上,我想在脚本中添加一些逻辑,这些逻辑可以集中捕获此限制和所有其他可能的问题,并且仅向用户显示一些错误消息,而只是挂起而不执行任何操作。
有什么方法可以做到这一点?
在谷歌应用程序脚本项目中,我有一些情况需要存储一些敏感用户的数据以供以后执行。假设在第一次执行期间,用户提供了一些数据,而脚本第二次使用该数据。
有很多方法可以做到这一点,比如保存在一些谷歌文档中或将其保存在 g 驱动器中。但是,我认为最干净的方法是将它存储在PropertiesService.getUserProperties() 中
它工作得很好,但是我不确定这种方法是否足够安全。目前尚不清楚这些数据是如何存储的。我找不到任何技术说明。我浏览了 cookie,看起来它不使用 cookie。也许,它存储在 G 服务器上的某个地方,但是其他一些脚本是否能够读取我放入 UserProperties 中的数据?此外,不清楚设置属性的生命周期是多少,它们是否可以永远驻留在那里,直到某个脚本删除它?
更新
在Going GAS书中关于属性服务的一章中,我发现了一些有趣的注释
当 Apps Script 首次启动时,特定用户可以访问 UserProperties,而不是绑定到特定脚本。如今,每个脚本都有自己的 UserProperties 类,只能由特定用户从该脚本中访问该类。
这意味着,其被存储在UserProperties通过任何数据SCRIPT1下USER1不在访问SCRIPT2下USER1。我实际上进行了快速测试以确认这一点。
另一个注意事项
Apps Script Properties 服务位于云端,因此与任何特定机器、环境或操作系统无关。
这部分证实了我的假设,即属性存储在运行 *.gs 脚本的 G 服务器上。
考虑到这一点,我会说使用属性服务在某种程度上是可靠和安全的。
很高兴听到有关此的任何评论。
我很难理解字节码操作/增强和 Java Instrumentation API 之间的依赖关系。
根据我的理解,要进行任何字节码操作/增强,我们有两种选择
*.class然后应该执行一些其他库/应用程序来进行操作。我不确定的事情:
是否有诸如构建时字节码操作之类的东西以及支持该操作的框架/库是什么(例如 Javassist、ASM)它们是否使用某种通用方法或只是读取和解析字节码,然后为您提供修改它的方法?
加载时操作是否仅依赖于 Java Instrumentation API?意味着所有可用的框架/库(例如 Javassist、ASM)都使用 javaagent 来进行操作?
请注意,我对这个主题的经验非常少,因此我有可能误解或错过了一些概念。我试图将这个复杂的主题归结为一些简单的解释,即使它非常笼统或使用类比来演示。