javascript - 无法读取数据数组。获取: Uncaught Error: Unknown type of column header: 1

标签 javascript arrays google-apps-script google-sheets google-visualization

我正在从谷歌工作表中获取数据表,但饼图无法读取数组。我在控制台上收到以下错误。

Uncaught Error: Unknown type of column header: 1

我正在使用下面的脚本从 Google 电子表格获取数据。

代码.gs:

function vodPiechart() {
  const ss = SpreadsheetApp.openById("");
  const sw = ss.getSheetByName("Pie_Chart_Data");
  var data = sw.getRange (1,1,3, 2).getValues();
  return data
}

HTML 脚本 ( from Google Charts )

<script type="text/javascript">
      google.charts.load("current", {packages:["corechart"]});
      google.charts.setOnLoadCallback(getData);
      function getData(){
        google.script.run.withSuccessHandler(drawChart).vodPiechart();
      }
      function drawChart(dataReturened) {
      var data = google.visualization.arrayToDataTable(dataReturened);

        console.log(dataReturened);

        var options = {
          title: 'My Channel',
          is3D: true,
        };

        var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
        chart.draw(data, options);
      }
    </script>

返回数据的console.log:

Array(3) [ (2) […], (2) […], (2) […] ]
​0: Array [ "Task", "Views" ]
​1: Array [ "Channel A", 2854170 ]
​2: Array [ "CHannel B", 240222 ]
​length: 3
​<prototype>: Array []

有人可以告诉我,我在这里做错了什么吗?

谢谢

最佳答案

有关数据的某些内容不正确。

当数据中不存在列标题时,将引发您收到的错误消息。
或者列标题的值不是字符串。

Uncaught Error: Unknown type of column header: 1

在本例中,数字 1 尝试用作列标题。

看下面的例子,会抛出下面的错误。

Uncaught Error: Unknown type of column header: 2854170

google.charts.load('current', {
  packages:['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ["Channel A", 2854170],
    ["Channel B", 240222],
  ]);

  var options = {
    title: 'My Channel',
    is3D: true,
  };

  var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
  chart.draw(data, options);
});

arrayToDataTable 方法有第二个 bool 参数。
当设置为true时,它将创建没有列标题的数据表,
并使用第一行作为数据。

var data = google.visualization.arrayToDataTable([
  ["Channel A", 2854170],
  ["Channel B", 240222],
], true);  // <-- first row is data

饼图中的列标题确实没有用,
因为每行都提供了标签。

尝试添加 bool 参数以进行解析。

请参阅以下工作片段...

google.charts.load('current', {
  packages:['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ["Channel A", 2854170],
    ["Channel B", 240222],
  ], true);

  var options = {
    title: 'My Channel',
    is3D: true,
  };

  var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="piechart_3d"></div>

关于javascript - 无法读取数据数组。获取: Uncaught Error: Unknown type of column header: 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69806470/

相关文章:

javascript - 如何在多个div中更新自聊天评论以来的时间

javascript - Blur.JS 不适用于 Amazon S3 图像

java - 保持两个数组 String[] 和 int[] 与合并排序并行

java - 没有空格的扫描仪输入字符串?

javascript - 如何导入制表符分隔的 "CSV"

angularjs - Google Apps 脚本中的 Angular JS

javascript - 如果 Body 在 Jquery 中有类,则防止悬停功能

javascript - Webdriverjs - By 未定义

c# - 在 C# 中将 Object[] 数组转换为 string[] 数组?

google-apps-script - 通过公式而不是脚本在单元格中的 Google Sheets 文件名?