恐怕我已经知道答案了,但也许其他人已经找到了一种方法来做到这一点。
我一直在仔细阅读 Slide Apps 脚本参考,我对其中的可能性感到兴奋。我想做的一件事是在演示文稿中更改幻灯片。具体来说,我想以某种方式表明已单击链接。
如果演示文稿中的链接像网络链接一样变成紫色,我会满足于此,但我想在单击某个链接或显示某个幻灯片时使用触发器。此触发器可以运行一个脚本,该脚本会适当地更改带有链接的幻灯片,以显示该链接已被单击,甚至完全删除该链接。
我知道幻灯片 API 落后于其他 API,但表单具有可以运行的可安装触发器onFormSubmit,而电子表格具有可以运行onChange和onEdit. 我希望看到幻灯片有一个 onPresent 触发器,该触发器运行一个脚本,可以使用onSlideChange可以报告 currentSlide 的方法来检测幻灯片更改。这样我们就可以在演示文稿显示时运行脚本,并根据当前幻灯片或链接采取行动。
除了将幻灯片特定触发器添加到 API 之外,还有什么方法可以在演示期间修改幻灯片吗?或者至少显示已单击链接?
我想知道这是否与Google Apps脚本特别繁忙的时间有关,因为它似乎与更新formResponse []数组的长度(偶尔)延迟有关.我正在使用以下代码来获取表单提交触发的最新响应:
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
var formResponse = formResponses[formResponses.length-1]; //latest response only
Logger.log('begin length: ' + formResponses.length);
Run Code Online (Sandbox Code Playgroud)
然后我的脚本的其余部分与formResponse []数组中的答案进行交互.偶尔,我会注意到它在最新回复之前得到了回复.我可以验证这一点,因为带有表单响应的电子表格会显示实际的最新响应.我的脚本需要5-15秒才能执行,因此我在代码末尾有以下几行来再次检查数组的长度:
var form2 = FormApp.getActiveForm();
var formResponses2 = form2.getResponses();
Logger.log('end length: ' + formResponses2.length);
Run Code Online (Sandbox Code Playgroud)
在日志中我会注意到第二个比第一个大(而第二个是正确的值).关于它何时发生,我还没有找到太多的模式,但似乎更常发生在太平洋标准时间上午7-9点之间.现在我添加了一个Utilities.sleep(5000)作为函数的第一行,以便在我得到响应之前有时间更新表单,到目前为止我没有任何n-2响应,这让我觉得有某种延迟导致表单在"on form submit"触发器触发后记录最新响应.
有没有其他人遇到类似的东西?