2017-07-06 65 views
0

我有一個谷歌片採取了谷歌的可視化數據表列日期列看起來像這樣:如何包括從電子表格

Date  Sales 
31/03/2017 1000 
30/06/2017 2000 
30/09/2017 1500 
31/12/2017 2500 
31/03/2018 4000 

如果我導入此使用.arrayToDataTable在谷歌圖表和設置第0列的類型爲「日期」或「字符串」 - 它不喜歡它,因爲日期只是格式化數字,即43190 = 31/3/2018。所以類型必須是「數字」,然後僅顯示在圖表上的底層數而不是日期

我可以通過每個行值的循環,我已經試圖改變它們與此

function formatDate(date) { 
    var d = new Date((date - 25569)*86400*1000), 
    locale = "en-us", 
    month = d.toLocaleString(locale, { month: "short" }); 
    var formattedDate = d.getDay() + "/" + month + "/" + d.getFullYear(); 
    return formattedDate 
} 

轉換成一個日期字符串的數量 - 所以用的,比方說,43190的輸入返回31 /三月/ 2018,但我仍然無法改變列類型爲「日期」

我所能輸出的日期作爲字符串,但他們不按時間順序排序,但按字母順序 - 我希望他們按時間順序排列。

有人可以告訴我我要去哪裏嗎?

編輯:

如果我改變功能

function formatDate(date) { 
    var d = new Date((date - 25569)*86400*1000) 
    return d 
} 

現在這樣設置列值,以完整的日期對象

,但我得到一個錯誤說「值太陽6月30日2013 01:00:00 GMT + 0100(GMT夏令時)與列索引0中的類型編號不匹配「

現在,這必須引用數據表列零,原始表格,是日期編號。我試着添加:

data.setColumnProperty(0, 'type' , 'date') 

但似乎得到了同樣的錯誤。

也許我不會改變代碼中正確點的類型。

澄清:我從谷歌工作表中獲取範圍的原始值,然後使用.arrayToDataTable將該範圍轉換爲數據表。所以,我不知道我可以做的數據表,因此單獨與嘗試的角度定義列類型:

data.setColumnProperty(0, 'type' , 'date') 

回答

0

你必須在日期型列提供完整的日期對象。

日期時良好的文檔都可以在這裏 https://developers.google.com/chart/interactive/docs/datesandtimes#axesgridlinesticks

發現日期和銷售的一個例子是

var data = new google.visualization.DataTable(); 
     data.addColumn('date', 'Date'); 
     data.addColumn('number', 'Sales'); 

     data.addRows([ 
      [new Date(2015, 0, 1), 5], [new Date(2015, 0, 2), 7], [new Date(2015, 0, 3), 3], 
      [new Date(2015, 0, 4), 1], [new Date(2015, 0, 5), 3], [new Date(2015, 0, 6), 4], 
      [new Date(2015, 0, 7), 3], [new Date(2015, 0, 8), 4], [new Date(2015, 0, 9), 2], 
      [new Date(2015, 0, 10), 5], [new Date(2015, 0, 11), 8], [new Date(2015, 0, 12), 6], 
      [new Date(2015, 0, 13), 3], [new Date(2015, 0, 14), 3], [new Date(2015, 0, 15), 5], 
      [new Date(2015, 0, 16), 7], [new Date(2015, 0, 17), 6], [new Date(2015, 0, 18), 6], 
      [new Date(2015, 0, 19), 3], [new Date(2015, 0, 20), 1], [new Date(2015, 0, 21), 2], 
      [new Date(2015, 0, 22), 4], [new Date(2015, 0, 23), 6], [new Date(2015, 0, 24), 5], 
      [new Date(2015, 0, 25), 9], [new Date(2015, 0, 26), 4], [new Date(2015, 0, 27), 9], 
      [new Date(2015, 0, 28), 8], [new Date(2015, 0, 29), 6], [new Date(2015, 0, 30), 4], 
      [new Date(2015, 0, 31), 6], [new Date(2015, 1, 1), 7], [new Date(2015, 1, 2), 9] 
     ]); 

你可以比添加以下選項來格式化你的日期

hAxis: { 
    format: 'MM/dd/yyyy' 
} 
+0

是的。我已經更新了這個問題來反映這一點。仍然沒有打球...... – MrPea

+0

哦,我差不多在那裏....我加入到數組源中{label:'Period',type:'date'},現在我已經知道了日期。所以我會嘗試在過濾器和軸中格式化它們 – MrPea

+0

您正在使用.arrayToDataTable轉換爲數據表。在我的例子中,我使用新的google.visualization.DataTable()創建了一個dataTable;然後添加具有類型的列和行。另外我無法找到文檔中的函數setColumnProperty。你在創建什麼類型的圖表? – Mike

相關問題