我在Google文档脚本中编写了一个附加组件。从侧边栏,它将信息写入文档,而不是电子表格。根据连接速度,Doc在信息的<1秒到5秒之间更新。
我的问题是用户双击。我可以禁用按钮;但是,脚本需要不到一秒钟的时间才能完成,但Doc会在&gt;中更新。 1秒。完成的脚本启用按钮。用户再次单击该按钮,脚本将首次尝试写入信息。最终结果是双重进入。
我的解决方案思路是:1。等待或暂停2.回调功能或3.锁定。
问题: 回调:我无法弄清楚我现在可以用什么事件/输入告诉脚本解锁按钮。我可以做一个永远不断检查的无限循环,直到Doc更新,但这似乎不是一个可靠的解决方案。 锁:没有任何东西只是等待。它可以等待功能可用,但这不是问题。问题是脚本是相对于Doc更新快速完成的。
有什么想法吗?
感谢。
答案 0 :(得分:0)
我想到了这个解决方案:
每次调用脚本时,都会将文档的当前文本与上次调用时传递给脚本的文本进行比较。
一些伪代码:
var previousText = "";
function addEntry() {
var body = DocumentApp.getActiveDocument().getBody();
var currentText = body.getText();
if (currentText === previousText) {
// Enable button here
return;
}
// Add entry to document AND currentText
// ...
// ...
previousText = currentText; // Save the text for future checks
// Enable button here
}
function onButtonClick(e) {
addEntry();
// Disable button here
}
答案 1 :(得分:0)
我明白了。我没有意识到.withSuccessHandler也等待Doc更新。我假设它只等待.saveSettings(设置)完成。现在SuccessHandler(enableButton)在适当的时候防止双击。
google.script.run.withFailureHandler(onFailure).withSuccessHandler(enableButton)
.saveSettings(settings);