Перемещение дат с помощью скрипта приложения, но оно возвращает другой формат? - PullRequest
0 голосов
/ 09 июля 2019

Я запускаю скрипт, который будет перемещать дату вверх в каждой ячейке.Я хочу переместить все выбранные даты на х дней.Когда я запускаю функцию, она работает, но меняет формат даты:

"J" - это просто простые даты "9/9/2019" И я пытаюсь запустить скрипт (который отправляет копию моего письма по электронной почте)выставьте счет клиенту, эта часть прекрасно работает)

function updatePM(sheet, email){
  var value;
  var datevalue
  var emails = sheet.getRange("G3:G" +  
sheet.getLastRow()).getValues();
  for (var i = 0; i < emails.length; i++)
    if (emails[i][0] == email){
  value = sheet.getRange("L" + (i+3)).getValue() + 1
  datevalue = sheet.getRange("J" + (i+3)).getValue() - 1
  sheet.getRange("L" + (i+3)).setValue(value);
  sheet.getRange("J" + (i+3)).setValue(datevalue); 

Так что я думаю, что это строка "datevalue = sheet.getRange (" J "+ (i + 3)). getValue () - 1"это нужно изменить, я никогда не перемещал дату и не уверен, как сохранить тот же формат.

1 Ответ

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

Sheets и Apps Script используют разные базы для единиц времени, поэтому вы получаете Unix Time после сценария. Попробуйте изменить:

value = sheet.getRange("L" + (i+3)).getValue() + 1
datevalue = sheet.getRange("J" + (i+3)).getValue() - 1
sheet.getRange("L" + (i+3)).setValue(value);
sheet.getRange("J" + (i+3)).setValue(datevalue); 

до:

value = sheet.getRange("L" + (i + 3)).getValue() + 86400000
datevalue = sheet.getRange("J" + (i + 3)).getValue() - 86400000
sheet.getRange("L" + (i + 3)).setValue(new Date(value)).setNumberFormat("MM/dd/yyyy");
sheet.getRange("J" + (i + 3)).setValue(new Date(datevalue)).setNumberFormat("MM/dd/yyyy");

Вы можете посмотреть доступные форматы даты здесь .

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