You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Google Sheet拉取数据渲染Pie Chart时报错Unknown type of column header:1求助

问题原因

报错Uncaught Error: Unknown type of column header: 1是因为Google Charts的arrayToDataTable方法无法正确识别传入数组的表头列类型,通常是从Google Sheet拉取的表头存在隐形格式/类型异常,或者Google Apps Script到前端的跨端传递过程中数据类型出现了隐式转换。

修复方案

你可以直接修改前端的drawChart函数,先对返回数据做类型格式化后再传入图表组件即可,两种可行修改方式如下:

方案1:格式化数组后传入arrayToDataTable

function drawChart(dataReturened) {
  // 先格式化所有数据,确保表头为字符串、数值列是Number类型
  const formattedData = dataReturened.map((row, index) => {
    if (index === 0) {
      // 表头行统一转字符串并去除隐形空格
      return row.map(col => col.toString().trim());
    }
    // 数据行:第一列转字符串作为分类,第二列转数字作为统计值
    return [row[0].toString().trim(), Number(row[1])];
  });

  var data = google.visualization.arrayToDataTable(formattedData);
  var options = {
    title: 'My Channel',
    is3D: true,
  };
  var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
  chart.draw(data, options);
}

方案2:显式指定列类型构造数据表(兼容性更强)

如果方案1仍然报错,可以跳过arrayToDataTable的自动类型识别,手动指定列类型构造数据表:

function drawChart(dataReturened) {
  var data = new google.visualization.DataTable();
  // 显式指定两列的类型和表头
  data.addColumn('string', dataReturened[0][0].toString().trim());
  data.addColumn('number', dataReturened[0][1].toString().trim());
  // 跳过表头行,直接添加格式化后的数据行
  data.addRows(dataReturened.slice(1).map(row => [row[0].toString().trim(), Number(row[1])]));

  var options = {
    title: 'My Channel',
    is3D: true,
  };
  var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
  chart.draw(data, options);
}

内容的提问来源于stack exchange,提问作者Gaurav K.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:02