首页 > 解决方案 > 为什么我收到此错误“无法绘制图表:未指定数据。”?

问题描述

我正在尝试将我的谷歌电子表格加载到我非常基本的 web 应用程序中,但我不断收到此错误“无法绘制图表:未指定数据”。我做错了什么?这是我的 HTML

<!DOCTYPE html>
<html>
  <head>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <script>
      const loaded = new Promise((res, rej) => {
        google.charts.load('current');
        google.charts.setOnLoadCallback(res);
      });
      let wrapper = null;
      async function drawTable(arr) {
        await loaded; //wait if charts is not loaded
        wrapper = new google.visualization.ChartWrapper({
          chartType: 'Table',
          dataTable: arr,
          containerId: 'table_div',
        });
        wrapper.draw();
      }
      function getData(form) {
        google.script.run
          .withSuccessHandler(drawTable)
          .getDataFromServer(form);//change server function name
      }
    </script>
  </head>
  <body>
    <form>
      <input type="text" name="searchtext" />
      <input type="button" value="ok" onclick="getData(this.parentNode)" />
    </form>
    <div id="table_div"></div>
  </body>
</html>

这是我的 CODE.GS

    function doGet() {
          return HtmlService.createHtmlOutputFromFile('index');
        }

  function getDataFromServer(e) {
 var id ="1GRi3NAdannp3uNDi202HC5hKNMNIVMNw_WPDYIes5Hs";
 var data = SpreadsheetApp.openById(id)
.getSheetByName("Daily report")
.getDataRange()
.getValues();
var ar = data.splice(0,1); //add headers
data.forEach(function(f) {
 if (~f.indexOf(e.searchtext)) ar.push(f);
 });
return ar;
 }

这是我的谷歌电子表格的链接。 https://docs.google.com/spreadsheets/d/1GRi3NAdannp3uNDi202HC5hKNMNIVMNw_WPDYIes5Hs/edit?usp=sharing

谢谢,

标签: google-apps-scriptgoogle-sheetsweb-applications

解决方案


这是我如何将数据加载到图表中的简单示例。第一列日期字符串,其他四列是数字。

function drawMealsChartOld(){
$('#btnC').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(function(mObj){
var dt=mObj.dA;
var hA=dt[0];
dt.splice(0,1);
var dA=dt.slice();
var data = new google.visualization.DataTable();
for(var i=0;i<hA.length;i++){
  if(i===0){
    data.addColumn('string',hA[i]);
  }else{
    data.addColumn('number',hA[i]);
  }
}
data.addRows(dA);
var options={
  title:'Meals Grams  (Starts: ' + mObj.start + '  -  Ends: ' + mObj.end + ')',
  fontSize: 14,
  fontName: 'Roman',
  width:640,
  height:350,
  pointSize:3,
  hAxis:{slantedText:true,slantedTextAngle:90,textStyle:{color:'#333300',fontName:'Verdana',fontSize:8,bold:true}},
  legend:{position:'top'},
  chartArea:{left:75,top:75,width:'75%',height:'50%'},
  series:{0: {targetAxisIndex: 0}, 1:{targetAxisIndex: 0}},
  vAxes:[{title:'GRAMS',titleTextStyle:{color:'#0000CC',fontName:'Verdana',fontSize:12,bold:true,italic:false},textStyle:{color:'#0000CC',fontName:'Verdana',fontSize:10,bold:true,italic:false}}]
};
var chart=new google.visualization.LineChart(document.getElementById('mcht'));
//Not interested in emailing this chart I just want to be able to see how the average is doing.
//google.visualization.events.addListener(chart,'click',function(){emailVitalsDialog()});
//google.visualization.events.addListener(chart,'ready',function(){
  //gImgObj['base64Data']=chart.getImageURI().split(',')[1];
  //gImgObj.ready=true;
//});
chart.draw(data,options);
$('#btnC').css('background-color','#ffffff');
})
.getMealsData();
}

推荐阅读