WedX - журнал о программировании и компьютерных науках

Определить конкретную строку на основе даты

Что делает этот код, так это идентифицирует строку массива на основе ввода (Дата) и возвращает значения, связанные с датой ввода.

Однако этот цикл 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);
}

  • Для лучшего ответа, пожалуйста, добавьте образец данных и соответствующий ожидаемый результат. 08.08.2020
  • Тан Вэй Мин, не могли бы вы попробовать мой обновленный ответ? 09.08.2020

Ответы:


1

Вместо этого вам нужно получить valueOf() объекта даты.

Попробуй это:

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").getValue().valueOf();
  
  for (var i = 0; i < data.length; i++){ 
        if (data[i][0].valueOf() == date) {
           break; 
        }
        var oldinflow = data[i][1];
        var oldoutflow = data[i][2]; 
  }
  

  formSS.getRange("H8").setValue(oldinflow);
  formSS.getRange("H11").setValue(oldoutflow);
}
08.08.2020
  • Не получилось :( 08.08.2020
  • == проверит адреса двух объектов в памяти. Когда вы извлекаете одно значение через .getValue() и такое же значение через .getValues(), результирующие ячейки памяти будут сравниваться как false. Чтобы использовать == с объектами Date, вы должны сказать range.getValue().valueOf() == bigRange.getValues()[i][j].valueOf(). 08.08.2020

  • 2

    getValues() может возвращать объект Date для ячеек, содержащих даты, с другой стороны, getDisplayValue() возвращает строку. Это может объяснить, почему (data[i][0] == date не работает.

    Чтобы предотвратить быстрое и грязное решение, которое может быть достаточно хорошим, вместо использования getValues() используйте getDisplayValues().

    08.08.2020
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]