Почему произошел сбой
- Первая проблема заключается в том, что
Offset
не является функцией, поэтому должно быть offset
, хотя ваши аргументы для функции верны , так что эта проблема решена. - Следующая проблема заключается в том, что
getActiveCell
не является отдельной функцией, ее нужно вызывать на листе. Например, MySheet.getActiveCell()
- Третья проблема, которая не приводит к тому, что ваш код обрабатывает sh, но позволяет использовать переменную
ColumnsBetweenSeries
, меняет ваш l * От 1050 * до for (var i = 0; i < ColumnsBetweenSeries; i++) {
Нежелательное поведение
На этом этапе ваш код теперь работает нормально, он больше не падает, но проблема все еще существует, он не совсем делай то, что хочешь. Вот как это выглядит сейчас
function PullSelectedData() {
var GeneralDataFirstLocation = "D4"; //data starting point cell D4
var ColumnsBetweenSeries = 4; //want data from each of the 4 columns (D4, H4, L4, P4)
var ReturnedValue = 0;
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");
for (var i = 0; i < ColumnsBetweenSeries; i++) {
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
ReturnedValue = BondCheckSS.getActiveCell().getValue();
}
}
Основная проблема в том, что ReturnedValue
перезаписывается при каждой итерации l oop. Таким образом, нам нужно либо добавлять его к итоговой сумме на каждой итерации, либо мы можем поместить их все в список, с помощью которого мы сможем впоследствии выполнять дальнейшую обработку.
Если мы добавим sh значение каждой ячейки к сумме, то строка, в которой вы установите ReturnedValue
в l oop, станет следующей
ReturnedValue += BondCheckSS.getActiveCell().getValue();
Если мы хотим поместить все это в список, мы можем добавить каждый из элементов в список, используя функцию добавления MyList.append(valueToAppend)
, в этом случае объявление ReturnedValue
становится следующим:
var ReturnedValue = [];
и внутри l oop настройка ReturnedValue
становится следующей, добавляя каждое значение в конец списка
ReturnedValue.append(BondCheckSS.getActiveCell().getValue());
Sum пример
function PullSelectedData() {
var GeneralDataFirstLocation = "D4"; //data starting point cell D4
var ColumnsBetweenSeries = 4; //want data from each of the 4 columns (D4, H4, L4, P4)
var ReturnedValue = 0;
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");
for (var i = 0; i < ColumnsBetweenSeries; i++) {
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
ReturnedValue += BondCheckSS.getActiveCell().getValue(); // Notice the change from = to +=
}
}
Список пример
function PullSelectedData() {
var GeneralDataFirstLocation = "D4"; //data starting point cell D4
var ColumnsBetweenSeries = 4; //want data from each of the 4 columns (D4, H4, L4, P4)
var ReturnedValue = []; // Notice change from 0 to []
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");
for (var i = 0; i < ColumnsBetweenSeries; i++) {
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
ReturnedValue.append( BondCheckSS.getActiveCell().getValue() ); // We now append each value to the list instead of overwriting it each time
}
} // ReturnedValue is now filled with the values of D4, H4, L4 and P4, Ex: [10, 20, 30, 40]