У вас есть несколько проблем с кодом, как показано.
Я думаю, вы хотели использовать множественное число range.getValues()
не range.getValue()
, поскольку .getValue
просто возвращает объект внутри верхней левой ячейки диапазона . Если data1
- строка, тогда for (var r in data1)
просто перебирает строку, а не массив значений.
Предполагая, что вы исправили data1
, чтобы это был массив массивов, тогда row1
это просто массив JavaScript, предположительно массив строк, поэтому различные места, где вы используете, например, row1[2].getValue
(в любом случае, без скобок) и row1[2].setValue(firstNameCorrected)
не должны иметь никакого эффекта, потому что это строки, не Range
объектов.
Что вам нужно сделать, так это изменить массив данных по мере необходимости, а затем вызвать range.setValues(data)
с измененными данными.
function caseCheck(r) {
var range = r.range;
var data = range.getValues();
for (var r in data) {
var row = data[r];
// do whatever mutation to row you want
}
range.setValues(data);
}
В качестве примечания , личные предпочтения / предложения, такой императивный изменяющийся код очень трудно читать и поддерживать. Попробуйте использовать больше (и меньше) функций ...
function caseCheck(r) {
var range = r.range;
var data = range.getValues();
var newData = data.map(rowCapitalizeFunction);
range.setValues(newData);
}
function rowCapitalizeFunction(row) {
var firstName = row[2];
// etc ... do what you need to do
return [/* send back a new array with new values, much easier to understand! */];
}