【发布时间】:2022-11-10 05:03:15
【问题描述】:
我创建了一个 Google Apps 脚本 bound to a spreadsheet。当用户单击 Sheet1 中的特定单元格时,我试图以编程方式将活动工作表更改为 Sheet2。
从文档来看,这应该很简单;有一个名为activate() 的工作表方法。但是,通过触发器调用此函数不会更改活动工作表 - Sheet1 保持焦点。其他函数,如 hideSheet() 和 showSheet() 立即工作,但不是 activate()。
知道我可能做错了什么吗?我是否错误地使用了此功能?
编辑: 这是我正在使用的代码:
// I want to make my "Accounts" sheet the active sheet
function onSelectionChange(event) {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet = ss.getSheetByName("Accounts")
sheet.activate()
// I tried flushing, waiting, and trying again; still doesn't work
SpreadsheetApp.flush()
Utilities.sleep(2000)
sheet.activate()
// However, hiding or showing the sheet works immediately:
sheet.hideSheet()
}
有趣的是,在故障排除过程中有两次,我重新打开了电子表格,并且相同的代码神秘地开始工作;但是,在 Chrome 中刷新页面时,activate() 功能再次停止工作。这就是让我怀疑这是否可能是 Apps Script 错误的原因。
【问题讨论】:
-
我不得不为我糟糕的英语水平道歉。不幸的是,我无法从您的问题中想象您当前的脚本。我再次为我糟糕的英语水平深表歉意。为了正确理解您的问题,您能提供您当前的脚本吗?
-
什么类型的触发器?工作表是否在浏览器中打开?
-
@Tanaike - 没问题,感谢您的帮助。我已经编辑了我的帖子以在上面添加脚本。
-
@TheMaster - 正确,此工作表已在我的浏览器中打开。当直接在代码编辑器中运行这个函数时,activate() 和 hideSheet() 函数都会成功。但是,当使用 onSelectionChange() 触发器运行此函数时,只有 hideSheet() 函数成功,而 activate() 函数失败(大多数情况下......),如上所述。
-
我刚刚测试过,它对我有用,您是否尝试过制作电子表格的副本?
标签: google-apps-script google-sheets triggers