@datwext
Начинающий (совсем) веб-программист

Как сравнить даты в разных ячейках с помощью скрипта?

Есть следующий рабочий кусок скрипта:
while (i<=1500&&s.getRange(i, col1).setNumberFormat("0.000").getValue()===s.getRange(i+1, col1).setNumberFormat("0.000").getValue()&& s.getRange(i+1, col1).isBlank()===false) { 
      s.getRange(i, col1).setNumberFormat("dd.mm.yyyy");
      i++;
      count++;
      }

Его задача в том, чтобы пройтись по столбцу до первого несовпадения дат и зафиксировать их количество в переменной count. Но из-за того, что используется .setNumberFormat() скрипт выполняется медленнее, чем хотелось бы. Есть ли какой-нибудь способ сравнить даты не прибегая к изменению формата ячейки (обычный getRange().getValue() здесь не пашет)?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Оно и не должно "пахать". Это не лошадь.

Я попробовал без примера понять, что делает этот код, и пришел к выводу, что это все надо менять хотя бы на

const values = s.getRange(1, col1, s.getLastRow(), col1).getValues();
const count = values.filter(
  (row, i, arr) => arr[i + 1] && compareAsDate_(row[0], arr[i + 1][0])
);
console.log(count);


Функция сравнения дат

/**
 *
 * @param {any} a
 * @param {any} b
 */
function compareAsDate_(a, b) {
  return (
    a && b && a.getTime && b.getTime && a.toDateString() === b.toDateString()
  );
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы