列自动增加

时间:2017-07-23 20:07:38

标签: google-apps-script google-sheets

我正在通过我的脚本设置公式,例如:

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然后再次注册则可以正常工作。但是,我想完全取消这个手动步骤。

编辑:

要复制,请按以下步骤操作:

  1. 制作新的Google表单
  2. 选择电子表格的目的地
  3. 从表单创建一个新脚本。
  4. 创建以下脚本
  5. 脚本代码:

    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);
    
    1. 运行以上代码
    2. 查看第I列和第J列的值
    3. 注册表格
    4. 再次查看该值。

1 个答案:

答案 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))");
相关问题