保护按钮不被按下的方法?
Ways to protect buttons from being pressed?
例如:在我的 Google 电子表格文档中有一个带有开始和停止按钮的计时器。到目前为止一切正常。但是,如果有人错误地点击了 'stop' 按钮,尽管计时器当前不是 运行,则会导致问题并让计时器显示大而错误的时间。因此,我正在寻找使 'stop' 按钮变灰直到 'start' 被按下的方法。之后,'start' 应该变灰并且 'stop' 现在可用。
有什么想法吗?
此外,我在编写脚本方面完全是个初学者,所以最好的办法是有人可以帮助我编写脚本代码。
Class Sheet 中有一个调用 getDrawings() 的方法 returns sheet 上的所有绘图,它揭示了 Class具有允许您重置宏的方法的绘图,因此您可以将其设置为虚拟宏,该宏不执行任何实际上应该禁用按钮的操作。
防止脚本并行 运行 的最佳方法是使用 Lock Service。
按下按钮时,您 运行 一个方法,该方法将获取锁并在完成后释放它。如果您碰巧在上一个任务仍在 运行ning 时单击该按钮,锁定获取将失败,您可以显示一个警报或忽略该错误。
function onButtonClick(){
const lock = LockService.getDocumentLock()
try{
lock.waitLock(1000)
// do some work
} catch(e){
if(e.message.indexOf('Lock')>=0){
SpreadsheetApp.getUi().alert(e.message)
}
} finally{
lock.releaseLock()
}
}
例如:在我的 Google 电子表格文档中有一个带有开始和停止按钮的计时器。到目前为止一切正常。但是,如果有人错误地点击了 'stop' 按钮,尽管计时器当前不是 运行,则会导致问题并让计时器显示大而错误的时间。因此,我正在寻找使 'stop' 按钮变灰直到 'start' 被按下的方法。之后,'start' 应该变灰并且 'stop' 现在可用。
有什么想法吗?
此外,我在编写脚本方面完全是个初学者,所以最好的办法是有人可以帮助我编写脚本代码。
Class Sheet 中有一个调用 getDrawings() 的方法 returns sheet 上的所有绘图,它揭示了 Class具有允许您重置宏的方法的绘图,因此您可以将其设置为虚拟宏,该宏不执行任何实际上应该禁用按钮的操作。
防止脚本并行 运行 的最佳方法是使用 Lock Service。 按下按钮时,您 运行 一个方法,该方法将获取锁并在完成后释放它。如果您碰巧在上一个任务仍在 运行ning 时单击该按钮,锁定获取将失败,您可以显示一个警报或忽略该错误。
function onButtonClick(){
const lock = LockService.getDocumentLock()
try{
lock.waitLock(1000)
// do some work
} catch(e){
if(e.message.indexOf('Lock')>=0){
SpreadsheetApp.getUi().alert(e.message)
}
} finally{
lock.releaseLock()
}
}