我正在通过我的脚本设置公式,例如:
sheet.getRange("I1").setFormula("=CONCATENATE(\"CHECKED IN: \", SUM(I2:I))");
当我查看该字段时,我会看到以下内容:=CONCATENATE("CHECKED IN: ", SUM(I2:I))
然后有人通过我的谷歌表格进行注册,我看看价值,它变为:=CONCATENATE("CHECKED IN: ", SUM(I3:I))
基本上,2变为3.我认为这是因为在工作表中添加了新行,但是,我的问题是如何防止这种情况?我想计算该列中所有行的总和,而不会通过电子表格调整我的公式。
注意:如果我继续将3更改为2然后再次注册则可以正常工作。但是,我想完全取消这个手动步骤。
编辑:
要复制,请按以下步骤操作:
脚本代码:
var form = FormApp.getActiveForm();
var ss = SpreadsheetApp.openById(form.getDestinationId());
form.deleteAllResponses();
form.removeDestination();
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
form = FormApp.getActiveForm();
//Code below is to resolve some bugs I've seen happen that prevented people from using the signup for the second time after I would reset it.
SpreadsheetApp.flush();
ss = SpreadsheetApp.openById(form.getDestinationId());
var sheet = ss.getSheets()[0];
sheet.getRange(CHECKIN_COLUMN).setFormula("=CONCATENATE(\"CHECKED IN: \", SUM(I:I))");
sheet.getRange(VERIFIED_COLUMN).setFormula("=CONCATENATE(\"CHECKED IN: \", SUM(J:J))");
form.setAcceptingResponses(true);
答案 0 :(得分:3)
如果您想修改范围,请在公式中添加 $ 。
sheet.getRange(CHECKIN_COLUMN).setFormula("=CONCATENATE(\"CHECKED IN: \", SUM($I$2:I))");
编辑2:删除循环依赖
在Google电子表格的顶部菜单中,执行以下操作:
档案>电子表格设置
选择“计算”选项卡,将“迭代计算”更改为“开”。
同时选择整个范围 I:I
sheet.getRange(CHECKIN_COLUMN).setFormula("=CONCATENATE(\"CHECKED IN: \", SUM(I:I))");