0

我環顧四周,但很難理解這個問題。無效日期Google Apps腳本

在我的電子表格中,我有一個包含日期的單元格,如29/02/16 - 06/03/16。

我正在分解這個問題,並將兩個日期設置爲Google Apps腳本中的兩個不同變量。然而,使用此代碼:

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

謝謝。我如何改變它在調試器中顯示的日期?我將使用日期變量來輸入腳本從外部API中提取數據的URL。 – JGA

0

這些步驟如下:

  • 獲取價值
  • 獲取電子表格時區
  • 斯普利特串日期變爲兩個
  • 將日期字符串重新格式化爲有效的日期字符串;加入「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); 
    };