Google Chart报错咨询:轴#0的数据列不能为字符串类型
解决Google Charts报错"Data column(s) for axis #0 cannot be of type string"
问题原因
- 数据类型不匹配:你用
getDisplayValues()获取数据时,所有单元格内容都会被转为字符串,包括Sales和Expense列的数值。Google Charts无法将字符串类型的数值识别为轴数据,因此抛出类型错误。 - 数据范围冗余:
getRange(2, 1, ws.getLastRow(), 3)的行数参数是ws.getLastRow(),会从第2行开始取到表格最后一行,包含表头下方的空行,导致数据中混入无效空值。
修复方案
1. 修改Code.gs的数据获取逻辑
替换getDisplayValues()为getValues()(保留原始数据类型),同时修正数据范围:
function doGet(){ return HtmlService.createTemplateFromFile("chart").evaluate(); } function getStats(){ const ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); // 从第2行开始,取最后一行减1行数据(排除表头行),共3列 return ws.getRange(2, 1, ws.getLastRow() - 1, 3).getValues(); }
2. (可选)优化日期显示格式
如果图表中日期显示不符合预期,可在Chart.html的options中添加日期格式化配置:
var options = { title: 'Sales and Expenses', curveType: 'function', legend: { position: 'bottom' }, hAxis: { format: 'yyyy-MM-dd' } // 自定义日期显示格式 };
修复原理
getValues()返回的数组中,日期单元格会转为Date对象,数值单元格会转为Number类型,Google Charts能正确识别这些类型作为坐标轴数据。- 修正后的范围仅取有数据的行,避免空行干扰图表渲染。
内容的提问来源于stack exchange,提问作者Riaz Rasool
相关产品推荐
相关产品推荐

