从Google表格中提取数据,在Google脚本上制作甘特图,并将HTML作为网络应用程序提供

时间:2017-01-11 22:27:09

标签: javascript charts google-sheets google-visualization

我试图在Google Script上创建Google甘特图,从Google表格电子表格中提取数据,以便将HTML作为网络应用程序提供服务。我设法用其他类型的图表来解决这个问题,但我认为日期格式存在一些问题,因为我不断得到像#34;无效的数据表格式:列#3必须是类型& #39;日期'"

我不熟悉Javascript,所以我真的迷失在这里。这是我的Code.gs上的代码。该文件必须是私有的,它是我的工作Gsuite,但它是一个简单的测试,数据格式与Google Gantt Charts documentation一样。

function doGet() {

  return HtmlService
  .createTemplateFromFile("Index")
  .evaluate()
  .setTitle("MKT Simple Cycle")
  .setSandboxMode(HtmlService.SandboxMode.IFRAME);  
}


function getCycle() {

  var ssID   = "1p4jEZtSk4GoVWvR9OrZj2ou1dpUbl6GHYUlJ1bSVY-s",
  sheet  = SpreadsheetApp.openById(ssID).getSheets()[0],
  data   = sheet.getDataRange().getValues();
  return data

}

以下是我的Javascript.html上的代码:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
google.charts.load('current', {'packages':['gantt']});
google.charts.setOnLoadCallback(getCycle);

function getCycle() {
  google.script.run.withSuccessHandler(drawChart).getCycle();
}

function drawChart(rows) {

  var data = google.visualization.arrayToDataTable(rows, false);

  var options = {
    height: 400,
    gantt: {
      trackHeight: 30
    }
  };

  var chart = new google.visualization.Gantt(document.getElementById('Cycle'));

  chart.draw(data, options);

}

1 个答案:

答案 0 :(得分:0)

这里的问题是sheet.getDataRange().getValues();返回字符串,而甘特图需要开始日期结束日期为javascript日期对象。

循环浏览data中的数组,转换单元格3和4中的字符串(如果工作表中有资源ID 列,或者如果您有单元格2和3)不要)使用Date对象。

row[2] = new Date(row[2]);
row[3] = new Date(row[3]);

这应该解决问题。

相关问题