求编写Google Apps Script:指定行范围插入新行时自动应用列公式
解决Google Sheets插入行自动填充公式与固定文本的问题
实现方案
通过Google Apps Script的onChange触发器监听工作表的行插入操作,仅在第6至13行范围内插入新行时,自动为新行的J、K、L、M列设置指定内容和公式,完全避免覆盖底部合计值。
完整代码
function onChange(e) { // 仅响应行插入事件 if (e.changeType !== 'INSERT_ROW') return; const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Planning'); if (!targetSheet) return; // 校验插入行是否在目标范围内 const insertedRow = e.range.getRow(); if (insertedRow < 6 || insertedRow > 13) return; // 为J列设置固定文本 targetSheet.getRange(`J${insertedRow}`).setValue('estimate'); // 设置K列计算公式 targetSheet.getRange(`K${insertedRow}`).setFormula(`=G${insertedRow}*I${insertedRow}`); // 设置L列销售税公式 targetSheet.getRange(`L${insertedRow}`).setFormula(`=IF(H${insertedRow}=TRUE,K${insertedRow}*0.13,0)`); // 设置M列总成本公式 targetSheet.getRange(`M${insertedRow}`).setFormula(`=K${insertedRow}+L${insertedRow}`); }
配置与说明
- 绑定触发器:打开脚本编辑器,点击左侧「触发器」图标,创建可安装触发器:
- 选择函数:
onChange - 事件源:「从电子表格」
- 事件类型:「更改」
- 选择函数:
- 范围控制:代码通过
insertedRow < 6 || insertedRow > 13过滤掉目标范围外的行插入操作,确保仅处理指定区域的新行。 - 动态公式:所有公式都绑定当前插入行的行号,不会影响底部合计区域的内容。
内容的提问来源于stack exchange,提问作者Jarvis Davis
相关产品推荐
相关产品推荐

