适用于任意行中特定列的函数

function that works on specific columns in arbitrary row

如何在 google sheet 中编写一个函数来遍历 sheet 的所有行。在当前行中,它将使用应用于该行中其他 3 个特定单元格中数据的数学函数的输出来填充 A 列(将它们称为 b、c、d,即使它们可能不在那些特定列中)。

举个例子。您可以在 example() 中看到用法:applyFuncToRowsWithIndexes 期望您的数学函数作为第一个参数,然后作为参数 2 - 4,三列索引中的每一个。

反过来,数学函数应该将一行作为其第一个参数,将列的索引作为参数 2 - 4。数学函数应该更新行索引 0,以更新 A 列。

function example() {
  // Apply 'testMathFunc' to each row, with the three columns being
  // B, C and D (ie. index 1, 2 and 3).
  applyFuncToRowsWithIndexes(testMathFunc, 1, 2, 3);
}

// Function loops through each row applying specified function 'mathFunc' to each row
function applyFuncToRowsWithIndexes(mathFunc, colIndex1, colIndex2, colIndex3) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    var row = values[i];

    // MathFunc should take 4 args:
    // The current row, and the indexes of the 3 columns used in the calculation
    mathFunc(row, colIndex1, colIndex2, colIndex3);
  }
  range.setValues(values);
}

// An example 'mathFunc' - testMathFunc, which makes column A simply
// the sum of B, C and D.
// Substitute with your own maths function
function testMathFunc(row, colIndex1, colIndex2, colIndex3) {
  row[0] = row[colIndex1] + row[colIndex2] + row[colIndex3];
}