Отключить автоматический анализ даты с помощью Google Scripts - PullRequest
3 голосов
/ 16 марта 2011

Я использую Google Scripts для некоторой магии Google Spreadsheets, и автоматический анализ даты сводит меня с ума! Лист, с которым я работаю, изобилует всевозможными форматами дат, и я бы предпочел иметь дело с ними как со строками, чем с тем, чтобы Google конвертировал их в объекты Date при каждом вызове .getValues ​​(). После долгих поисков я все еще не могу найти способ остановить / отключить Google от автоматического разбора этих строк. Кто-нибудь знает как?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Да, это возможно, но вы должны внести изменения перед вызовом getValues ​​и использовать getDisplayValues ​​():

  // do not use getValues(), which will convert dates
  var string_data = my_sheet.getRange(...).getDisplayValues();

Если вы хотите использовать только отображаемое значение вВ ограниченном случае, скажем, дат, вы можете скопировать оба значения и отображения, затем проверить, является ли ваше значение датой, и, если это так, использовать вместо этого соответствующий дисплей:

  // use getDisplayValues() for dates, getValues() otherwise
  var string_data = my_sheet.getRange(...).getDisplayValues();
  var value_data =  my_sheet.getRange(...).getValues();

  value_data.forEach(function(row_vals, i) {
    row.forEach(function(cell_val, j) {
      if(is_date(cell_val)) // see e.g. https://stackoverflow.com/a/17110249/3160967
        do_something_with(string_data(i, j));
      else
        do_something_with(cell_val);
    });
  });

Наконец, вышеуказанные потребностимодификация, если вы хотите использовать ее как листовую функцию, потому что вызовы функций автоматически применяют getValues ​​() перед выполнением кода функции.Чтобы обойти это, вы можете использовать методы, описанные в https://webapps.stackexchange.com/a/30784

0 голосов
/ 02 декабря 2011

Это действительно невозможно, но возможный обходной путь - создать вспомогательный лист и вставить формулу для объединения всех значений на исходном листе с пустой строкой.Затем getValues() на этом вспомогательном листе, который может быть скрыт или удален сценарием после использования.

Формула может быть такой же простой, как установка этого параметра на A1 вспомогательного листа

=ArrayFormula(Sheet1!A:T&"")

Предостережение с этим обходным решением заключается в том, что если пользователь установит пользовательское форматирование для своих дат, они не будут сохранены.Но если это важно, вы можете получить их, используя getNumberFormats()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...