如何在Google Apps Script函数执行期间将侧边栏按钮设为加载状态?
解决方案
要实现点击按钮时切换为Bulma加载状态、执行完函数后恢复的效果,可以通过前端JS包装函数结合google.script.run的回调方法来实现,具体步骤如下:
1. 修改按钮HTML结构
给每个触发GAS函数的按钮绑定统一的处理函数,传递当前按钮元素和要执行的GAS函数名:
<button onclick="handleButtonClick(this, 'myFunction')" class="button is-link">执行我的函数</button> <button onclick="handleButtonClick(this, 'anotherFunction')" class="button is-success">执行另一个函数</button>
2. 添加前端JavaScript处理逻辑
在侧边栏的HTML中嵌入以下JS代码,负责控制按钮状态切换:
function handleButtonClick(button, funcName) { // 保存按钮原始文本和状态 const originalText = button.textContent; // 切换为Bulma加载状态,同时禁用按钮防止重复点击 button.classList.add('is-loading'); button.disabled = true; // 调用GAS函数,并绑定成功/失败回调 google.script.run .withSuccessHandler(() => { // 执行成功后恢复按钮状态 button.classList.remove('is-loading'); button.disabled = false; button.textContent = originalText; }) .withFailureHandler(error => { // 执行失败也恢复按钮状态,可选添加错误提示 button.classList.remove('is-loading'); button.disabled = false; button.textContent = originalText; alert(`执行出错:${error.message}`); }) [funcName](); // 动态调用指定的GAS函数 }
关键说明
google.script.run是异步执行的,必须通过withSuccessHandler和withFailureHandler追踪执行完成状态,才能准确恢复按钮。- 禁用按钮是为了避免用户重复点击触发多次函数执行,提升体验。
- 侧边栏没有默认执行提示是因为它是自定义HTML界面,Google原生的执行提示只针对内置菜单/直接运行的场景,因此需要手动实现前端反馈。
内容的提问来源于stack exchange,提问作者user3392296
相关产品推荐
相关产品推荐

