You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

On Change触发器触发后如何切换活动工作表至新创建的工作表

问题原因

On Change触发器触发INSERT_GRID(新建工作表)事件时,Google Sheets不会自动将活动工作表切换为新创建的工作表,所以getActiveSheet()获取到的始终是新建操作前处于激活状态的工作表,默认就是第一个工作表。

解决方案

Google Sheets默认将新创建的工作表追加到工作表列表的末尾,直接读取工作表列表的最后一项即可获取新建的工作表,如需切换活动工作表到新表,调用activate()方法即可。

修正后代码

function mynewFunction(e) {
  if (e.changeType == 'INSERT_GRID') {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    // 获取所有工作表,取最后一项即为新创建的工作表
    const newSheet = ss.getSheets()[ss.getSheets().length - 1];
    // 切换活动工作表到新创建的工作表
    newSheet.activate();
    // 弹出新工作表名称
    Browser.msgBox(newSheet.getName());
  }
}

注意:如果是手动选择插入位置(比如在已有工作表中间插入新表),上述取最后一个工作表的方法会失效,这种情况需要提前用PropertiesService缓存所有工作表的ID,触发事件时对比新旧ID数组找到新增的工作表即可。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:09:01