javascript - Google Apps Script Q - 在表格中是否可以设置公式(SUM),其中单元格的总和根据行而变化?
问题描述
我正在尝试编写一个函数,它将 setFormula 对 2 个单元格的值求和。该公式需要根据正在处理的行进行更改。
例如:
- 如果在工作表的第 8 行工作,公式将设置为“SUM=E8-D8”
- 如果在工作表的第 9 行工作,公式将设置为“SUM=E9-D9”,以此类推,无穷无尽。所以基本上如何将公式复制到一列中。由于另一个与将数据复制到另一张工作表相关的功能,我不能只在列中预先填写公式。
我有一个函数可以在第一个可用行中设置公式,但不知道是否可以修改它以如上所述工作。
function onEdit(e) {
var row = e.range.rowStart;
var col = e.range.columnStart;
if (row > 7 && col == 4) {
insertCurrentTime(e.range.offset(0, 1)); // This sets the value in Column E
insertDurationFormula(e.range.offset(0, 2)); //This sets the formula in Column F
}
}
function insertCurrentTime(cell) {
cell.setValue(new Date());
}
function insertDurationFormula(cell) {
cell.setFormula("=SUM(E8-D8)");
}
解决方案
解释:
您需要使用模板文字将单元格行号合并到setFormula
函数的字符串参数中。
let crow = cell.getRow();
cell.setFormula(`=SUM(E${crow}-D${crow})`);
请insertDurationFormula
按照我的解决方案中的建议进行修改。
解决方案:
function onEdit(e) {
var row = e.range.rowStart;
var col = e.range.columnStart;
if (row > 7 && col == 4) {
insertCurrentTime(e.range.offset(0, 1)); // This sets the value in Column E
insertDurationFormula(e.range.offset(0, 2)); //This sets the formula in Column F
}
}
function insertCurrentTime(cell) {
cell.setValue(new Date());
}
function insertDurationFormula(cell) {
let crow = cell.getRow(); // new code
cell.setFormula(`=SUM(E${crow}-D${crow})`); // modified
}
推荐阅读
- linux - 更新 initramfs 时出现“致命:无法确定内核版本”
- sql-server - XML 节点中的 SQL 变量
- webstorm - WebStorm 在终端中打开文件夹并自动将会话重命名为文件夹名称
- java - (hello-> h3o) 如何在字符串中替换中间字母为替换的字母数
- google-apps-script - 如何在 GAS 中创建一个脚本,以在 Google 表格中创建一个按钮或其等效项?
- graphql - Can't custom value of graphql enum
- python - 对数据框中的前 N 行起作用?
- bash - git clone 后 git 差异无法正常工作
- flutter - Flutter ml 套件不工作,可能在 Catalina 更新之后
- javascript - 组件 CommentListComponent 不是任何 NgModule 的一部分,或者该模块尚未导入您的模块