从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.
相关产品推荐
相关产品推荐

