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

如何在Google Apps Script中为插入行添加C*D乘积公式?

解决方案

可以直接在DATA_TO_WRITE数组里添加公式,但因插入行的行号是每个工作表的动态值,更可靠的方式是结合插入行号动态生成公式,以下是具体实现:

推荐实现方式(动态生成公式)

无需修改原DATA_TO_WRITE数组,在写入基础数据后,单独针对E列设置对应行的乘积公式:

const sss = SpreadsheetApp.getActive();
const SHEET_TO_GET = ['BOURGET', 'ALPINES MUSEUM DAV', 'BLOIS_MAQUETTE', 'BELVEDERE MUSEUM', 'BELVEDERE MUSEUM'];
const DATA_TO_WRITE = [['2D', "MAREIKE", '50', '33.0'],
['PROJECT MANAGEMENT', "LOUISE", '50', '16.5'],
['PROJECT MANAGEMENT', "MAREIKE", '50', '6.0'],
['FABRICATION', "MAREIKE", '50', '6.0'],
['2D', "MAREIKE", '50', '31.5']];
SHEET_TO_GET.forEach((n, i) => {
  let sh = sss.getSheetByName(n);
  let col1 = sh.getRange("A1:A" + sh.getLastRow()).getValues().flat();
  let nr = col1.indexOf("MATERIAL") + 1;
  sh.insertRowBefore(nr);
  // 写入A-D列的基础数据
  sh.getRange(nr, 1, 1, DATA_TO_WRITE[i].length ).setValues([DATA_TO_WRITE[i]]);
  // 给E列设置乘积公式,用当前插入行号nr拼接
  sh.getRange(nr, 5).setFormula(`=C${nr}*D${nr}`);
  // 也可使用PRODUCT函数:=PRODUCT(C${nr},D${nr})
});

关于直接修改DATA_TO_WRITE的说明

如果一定要在数组中预先添加公式,需要提前计算每个工作表的插入行号nr,再生成带对应行号的公式字符串存入数组,但这种方式需要额外遍历两次工作表(先算所有行号,再写入数据),不如动态生成公式简洁高效,不推荐使用。

关键注意点

  • 公式中的行号必须与插入行的实际行号nr完全对应,动态拼接能确保这一点
  • 使用setFormula单独设置公式,比在setValues中混合文本与公式的写法更直观,也能避免类型兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:53:26