首页 > 解决方案 > 请帮助我使用增量功能

问题描述

我有这个公式{=concatenate(getNotes(CELL("address",B2)&":"&CELL("address",AE2)))}来获取表单响应电子表格中某个范围的注释。现在我遇到了第一个问题,因为它是一个表单响应表,所以我无法在开始时添加公式,因为每个响应都会插入行,并且我无法添加 arrayformula,因为 arrayformula 不能使用连接。

所以我需要一个脚本,每次提交响应时在 AG 列中添加这个公式。我可以为此编写脚本,但我发现每一行都有一个增量问题。每次提交响应时,脚本的范围都必须增加 1。就像 A2 行公式应该大于 1 和 A3 行公式应该是{=concatenate(getNotes(CELL("address",B3)&":"&CELL("address",AE3)))}等等。那么我该怎么做呢?

我的代码。

function addFormula() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Expense Voucher Uploading Responses");
var getFormula = sheet.getRange(3,33,sheet.getLastRow()-2)
sheet.getRange("AG2").copyTo(cell);
}

我得到的第二个代码,但我认为这并不完美。

function addFormula() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Expense Voucher Uploading Responses");
var data = sheet.getRange(919,1,sheet.getLastRow()-1,33).getValues();
for (var i = 0; i < data.length; ++i){
    var row = data[i]
    var timestamp = row[0];
var formulaC = row[32];
if(timestamp !== '' && formulaC === '') {
  var formula = `=concatenate(getNotes(CELL("address",B${sheet.getLastRow()})&":"&CELL("address",AE${sheet.getLastRow()})))`
sheet.getRange(i+919, 33).setValue(formula);
}
}}

我可以在表单提交时为此代码添加触发器,但如果出现任何问题,则 getLastRow() 可能会导致错误。因此,如果有人有更好的,请帮助。

标签: google-apps-scriptauto-increment

解决方案


推荐阅读