0

Я осмотрелся, но я стараюсь понять эту проблему.Недействительная дата Скриншот Google Apps

В моей таблице у меня есть ячейка, которая содержит дату 29/02/16 - 06/03/16.

Я ищу, чтобы разделить это и установить две даты как две разные переменные в Google Apps Script. Однако, используя этот код:

var date = new Date("B4"); 

Я получаю недействительную дату. Есть идеи?

ответ

0

Строка «B4» не является датой. Если вы хотите, чтобы преобразовать строку в ячейке B4 в использовании дата:

var iDate = new Date(sheet.getRange("B4").getValue()); 
+0

Спасибо. Проблема, которую я сейчас получаю, заключается в том, что она возвращает дату Sun Mar 06 2016 00:00:00 GMT-0000 (GMT), и мне она нужна в формате YYYY-MM-DD. Это возможно? – JGA

+0

Теперь переменная содержит дату, а не строку. Дата может отображаться в различных форматах - изменять формат отображения участвующих ячеек. – Taras

+0

Спасибо. Как изменить, как дата, показанная в отладчике, хотя? Я буду использовать переменные даты для ввода URL-адреса, который сценарий извлекает из внешнего API. – JGA

0

Эти шаги:

  • Получить значение
  • Получить электронную таблицу TIMEZONE
  • Split строка даты на два
  • Переформатировать строки даты в строки действительной даты; добавление «20» в год в качестве префикса
  • создать формат даты
  • с Utilities.formatDate()

Вы должны добавить «20» в начале года, или он будет считать, что год начинается с " 19" .

function getTheDate(){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getSheetByName(name); 

    var cellValue = sh.getRange("B4").getValue(); 
    //var cellValue = "29/02/16 - 06/03/16"; //For testing purposes 

    var positionOfSpace = cellValue.indexOf(" "); 
    var positionOfSecondSpace = cellValue.lastIndexOf(" "); 

    var firstDate = cellValue.slice(0,positionOfSpace); 
    var secondDate = cellValue.slice(positionOfSecondSpace + 1); 
    //Logger.log('firstDate: ' + firstDate); 
    //Logger.log('secondDate: ' + secondDate); 

    //Reformat dates to a valid string format 
    firstDate = firstDate.slice(3,5) + "/" + firstDate.slice(0,2) + "/20" + firstDate.slice(6); 
    secondDate = secondDate.slice(3,5) + "/" + secondDate.slice(0,2) + "/20" + secondDate.slice(6); 

    var ssTimeZone = ss.getSpreadsheetTimeZone(); 
    //var scriptTimeZone = Session.getScriptTimeZone(); 
    Logger.log('ssTimeZone: ' + ssTimeZone); 

    var dateOneAsDate = new Date(firstDate); 
    var date2_AsDate = new Date(secondDate); 

    //Logger.log('dateOneAsDate: ' + dateOneAsDate); 
    //Logger.log('date2_AsDate: ' + date2_AsDate); 

    var date1_Formated = Utilities.formatDate(dateOneAsDate, scriptTimeZone, "yyyy-MM-dd"); 
    var date2_Formated = Utilities.formatDate(date2_AsDate, scriptTimeZone, "yyyy-MM-dd"); 

    //Logger.log('date1_Formated: ' + date1_Formated); 
    //Logger.log('date2_Formated: ' + date2_Formated); 
}; 
Смежные вопросы