Ваш код нуждается в большой помощи.Вот совет для начала.
Как уже упоминали другие, вы должны вызывать .getValues () для всего диапазона, который дает вам двумерный массив значений ячеек [[A1value, B1value, ...], [A2val, B2val ...], ...].Сначала вы должны взять ширину и длину и назначить переменную.Ссылка на эту переменную вместо вызова API в условиях цикла.Фактически, поскольку вы знаете диапазоны заранее, вы должны определить все диапазоны, которые вам понадобятся вне основного цикла for, а также электронную таблицу (ы):
var aa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Run Program");
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
var range1 = ss.getRange("b6:u6");
var range2 = ss.getRange("v6:ao6");
for (i = 1; i <= scenarios; i++) { ...
Запуск сценариевЭто займет много времени, если вы будете повторять вызовы API.
Не совсем точно, что пытается сделать ваш макрос, но вот шаблон для запуска такого рода цикла и как вы должны думать об этом.
var range = ss.getRange(A1-style-address);
var values = range1.getValues();
var width = range1[0].length;
var height = range1.length;
var new_values = new Array();
for (var i = 0; i < height; i++) {
for (var j = 0; j < width; j++) {
//do something with values[i][j], like push to new_values
}
}
//something like:
//var new_range = ss.getRange(different A1-style address)
//new_range.setValues(new_array)
Вам нужно убедиться, что новый массив содержит значения в двумерном массиве, который имеет те же измерения, что и диапазон, в который вы их помещаете, иначе он выдаст ошибку.
Я оставлю вам возможность выяснить, как изменить массив new_values внутри цикла, чтобы убедиться, что он имеет правильный размер.
Вот ссылка на обзор массивов в javascript, если это ново для вас, и вот некоторая документация по массиву .