Что делает этот код, так это идентифицирует строку массива на основе ввода (Дата) и возвращает значения, связанные с датой ввода.
Однако этот цикл for не работает, поскольку он не соблюдает условие if и всегда возвращает последнюю строку массива.
function viewData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Overall Cashflow"); //Data entry Sheet
var datasheet = ss.getSheetByName("Cashflow Tracker Data"); //Data Sheet
var data = datasheet.getDataRange().getValues();
var date = formSS.getRange("H5").getDisplayValue();
for (var i = 0; i < data.length; i++){
if (data[i][0] == date) {
break;
}
var oldinflow = data[i][1];
var oldoutflow = data[i][2];
}
formSS.getRange("H8").setValue(oldinflow);
formSS.getRange("H11").setValue(oldoutflow);
}
==
проверит адреса двух объектов в памяти. Когда вы извлекаете одно значение через.getValue()
и такое же значение через.getValues()
, результирующие ячейки памяти будут сравниваться как false. Чтобы использовать==
с объектами Date, вы должны сказатьrange.getValue().valueOf() == bigRange.getValues()[i][j].valueOf()
. 08.08.2020