Преобразование формата даты без часового пояса - скрипт приложения Google (Javascript), электронная таблица Google

Я работаю над интеграцией электронной таблицы Google и LINE Message API (BOT), где сценарий приложения Google является серверным.

Я получаю ячейку формата даты из электронной таблицы Google и отправляю ее боту LINE, но в ответном сообщении говорилось о другом. в ячейке таблицы Google

1/5/2020

В скрипте приложения Google я сначала закодировал его

var colb =  ss.getSheets()[0].getRange(i+3, 2).getValue();

но сообщение LINE отправляет формат включенного часового пояса по умолчанию

Вс 5 января 2020 00:00:00 GMT + 0700 (ИКТ)

Так что я закодировал это

var colb =  Utilities.formatDate(ss.getSheets()[0].getRange(i+3, 2).getValue(), ss.getSpreadsheetTimeZone(), "dd/MM/YY");

Это работает, но не работает, когда ячейка пуста, и я понятия не имею, почему. Так что, пожалуйста, помогите мне с этим. Заранее спасибо

Всего 2 ответа


Если ячейка пуста и вы хотите использовать Utilities.formatDate, я бы сделал так:

var colb =  "No Data" || Utilities.formatDate(ss.getSheets()[0].getRange(i+3, 2).getValue(), ss.getSpreadsheetTimeZone(), "dd/MM/YY");

Поэтому, если в ячейке нет значения, просто присвойте значение по умолчанию «Нет данных».


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

var value = ss.getSheets()[0].getRange(i+3, 2).getValue();
var colb = (typeof value == "object" && value instanceof Date) ? Utilities.formatDate(value, ss.getSpreadsheetTimeZone(), "dd/MM/YY") : value;

Есть идеи?

10000