如何在Apps Script中设置工作表创建、更名事件作为触发器
实现方案
核心原理
Simple Trigger 确实仅支持响应单元格内容编辑事件,你需要使用可安装的
onChange触发器,该触发器可以响应电子表格的结构变更事件,包括工作表新增、工作表重命名、行列增删等操作。
第一步:编写Apps Script代码
// 替换为你要存放子文件夹的Drive父文件夹ID const PARENT_FOLDER_ID = "你的父文件夹ID"; // 存储工作表ID和对应文件夹ID的映射服务 const scriptProps = PropertiesService.getScriptProperties(); function onSheetStructureChange(e) { // 仅响应工作表新增、重命名事件 if (e.changeType === "INSERT_SHEET") { const newSheet = e.source.getActiveSheet(); const sheetId = newSheet.getSheetId().toString(); const sheetName = newSheet.getName(); // 创建对应文件夹 const parentFolder = DriveApp.getFolderById(PARENT_FOLDER_ID); const newFolder = parentFolder.createFolder(sheetName); // 存储映射关系 scriptProps.setProperty(sheetId, newFolder.getId()); } else if (e.changeType === "RENAME_SHEET") { const renamedSheet = e.source.getActiveSheet(); const sheetId = renamedSheet.getSheetId().toString(); const newSheetName = renamedSheet.getName(); // 获取对应文件夹ID const folderId = scriptProps.getProperty(sheetId); if (folderId) { // 修改文件夹名称 const targetFolder = DriveApp.getFolderById(folderId); targetFolder.setName(newSheetName); } } }
第二步:安装可安装触发器
- 打开你需要配置的Google表格,点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
- 把上面的代码粘贴进去,替换代码里的
PARENT_FOLDER_ID为你要存放子文件夹的Google Drive父文件夹ID(ID可以从父文件夹的URL中获取) - 点击编辑器左侧菜单栏「触发器」(闹钟图标),点击「添加触发器」
- 触发器配置项选择:
- 选择要运行的函数:
onSheetStructureChange - 选择事件来源:
电子表格 - 选择事件类型:
更改时
- 选择要运行的函数:
- 点击保存,按照提示完成Google账号权限授权即可
注意事项
- 首次配置触发权限时,需要允许脚本访问你的Google Drive和Google表格权限,没有权限会导致操作失败
- 代码中使用工作表唯一ID作为映射标识,避免工作表重名导致的匹配错误
- 如果需要查看历史映射关系,可以把映射存储逻辑改成写入到表格中一个单独的隐藏工作表,方便排查问题
内容的提问来源于stack exchange,提问作者Jenny
相关产品推荐
相关产品推荐

