多个用户使用 Google 电子表格 add-on 时出现问题
Problems when using a Google spreadsheet add-on by multiple users
在 self-developed add-on for Google Sheets 中,添加了从侧栏中的 JavaScript 音频播放器播放声音文件的功能,取决于 table 中的选择。对于代码本身,请参见 .
当用户从 Markettetplace 安装了 add-on 后,add-on 一次只能对一个用户正常工作:当所选行发生变化时,相应的声音文件会自动播放(自动启动)通过 right-hand 侧的播放器。
但是,当多个用户使用此add-on时,各自浏览器中的音频播放器似乎相互干扰,以至于音频文件中断并重新开始直到再次中断,因此,以中断音频文件的循环结束。因此,问题似乎是 运行 多个用户的 add-on 正在永久中断并重新启动脚本。
我完全不知道从哪里开始调查这个错误。我发现,在 multi-user 模式下,传送声音文件的 PHP 脚本会一遍又一遍地启动。
在single-user模式下,该脚本只被调用一次。
可访问可重现的示例here; Add-ons > 'play audio'(需要 Google 帐户)。要重现错误,sheet 必须打开两次(例如在两个浏览器中)。
查看 to 上的代码,问题是由于使用脚本属性存储引起的,因为打开边栏的任何用户都会覆盖脚本属性。
解决方案是使用用户属性存储。也就是说,
而不是
PropertiesService.getScriptProperties()
使用
PropertiesService.getUserProperties();
资源
在 self-developed add-on for Google Sheets 中,添加了从侧栏中的 JavaScript 音频播放器播放声音文件的功能,取决于 table 中的选择。对于代码本身,请参见
当用户从 Markettetplace 安装了 add-on 后,add-on 一次只能对一个用户正常工作:当所选行发生变化时,相应的声音文件会自动播放(自动启动)通过 right-hand 侧的播放器。
但是,当多个用户使用此add-on时,各自浏览器中的音频播放器似乎相互干扰,以至于音频文件中断并重新开始直到再次中断,因此,以中断音频文件的循环结束。因此,问题似乎是 运行 多个用户的 add-on 正在永久中断并重新启动脚本。
我完全不知道从哪里开始调查这个错误。我发现,在 multi-user 模式下,传送声音文件的 PHP 脚本会一遍又一遍地启动。
在single-user模式下,该脚本只被调用一次。
可访问可重现的示例here; Add-ons > 'play audio'(需要 Google 帐户)。要重现错误,sheet 必须打开两次(例如在两个浏览器中)。
查看
解决方案是使用用户属性存储。也就是说,
而不是
PropertiesService.getScriptProperties()
使用
PropertiesService.getUserProperties();
资源