Google Apps Script实现Google Sheets选中工作表定时自动追加多行
Google Sheets 批量追加指定行+周定时触发脚本
下面的脚本经过实测可用,解决了同类脚本常见的执行报错、追加位置错误、单表报错导致全流程中断的问题。
核心可执行代码
打开你的Google表格,点击顶部菜单栏「扩展程序」->「Apps Script」,把默认编辑器里的内容清空,粘贴下面的代码:
// ------------ 自定义配置区,根据你的需求修改 ------------ const CONFIG = { // 填入需要追加行的工作表名称,*必须和表格底部的工作表标签名完全一致* targetSheetNames: ["工作表1", "工作表2"], // 每次脚本执行时,给每个目标工作表追加的行数 appendRowCount: 500 } // ------------ 配置区结束,以下内容无需修改 ------------ function batchAppendRows() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); CONFIG.targetSheetNames.forEach(sheetName => { const targetSheet = spreadsheet.getSheetByName(sheetName); // 跳过名称不匹配的不存在工作表,避免整体脚本崩溃 if (!targetSheet) { console.log(`跳过不存在的工作表:${sheetName}`); return; } // 获取当前工作表最后一个有内容的行号,在其后追加行 const lastContentRow = targetSheet.getLastRow(); targetSheet.insertRowsAfter(lastContentRow, CONFIG.appendRowCount); }) }
粘贴完成后先修改配置区的工作表名和追加行数,点击顶部的保存按钮给脚本命名。你可以先选中batchAppendRows函数点击运行按钮,完成授权后确认行追加效果正常,再配置定时触发器。
之前脚本失效的常见原因
- 错误使用
appendRow()方法:该方法仅支持单次插入1行,循环调用时很容易触发接口限频,且没有错误捕获机制时会直接中断执行 - 未做工作表存在性校验:只要配置的工作表名有一个拼写错误,整个脚本就会直接报错终止,剩余工作表都无法完成行追加
- 插入位置逻辑错误:部分脚本用
getMaxRows()获取工作表最大行数(包含已存在的空白行)作为插入起点,会把新行插入到现有空白区域中间,视觉上看起来没有追加成功 - 未完成授权:首次运行脚本时会弹出权限申请窗口,未授权的情况下脚本会静默失败,没有任何提示
配置每周自动执行触发器
脚本测试正常后按以下步骤配置定时任务,后续不需要手动运行:
- 点击Apps Script编辑器左侧边栏的时钟图标(触发器选项)进入触发器管理页
- 点击页面右下角的「添加触发器」按钮
- 在弹出的配置表单中按以下规则选择参数:
- 选择要运行的函数:
batchAppendRows - 选择部署版本:
Head - 选择事件来源:
时间驱动 - 选择时间驱动类型:
周计时器 - 选择执行的星期和具体时段:建议选表格使用人数最少的时段,避免和正在进行的编辑操作冲突
- 选择要运行的函数:
- 点击保存,按提示完成Google账号授权后,定时任务就会按配置自动执行
后续如果需要调整追加的行数、增减目标工作表,直接修改脚本开头CONFIG区域的对应值保存即可,不需要重新创建触发器。
内容的提问来源于stack exchange,提问作者Kasim Usman
相关产品推荐
相关产品推荐

