Google Sheet Scripts中ss.getRange()一维数组JSON序列化去嵌套括号方法
Google Sheet Scripts getRange()返回单列数据格式化方案
问题原因
Google Sheet的getRange().getValues()接口返回值固定为二维数组,结构为[行1[列1, 列2...], 行2[列1, 列2...]]。即便仅获取单列数据,每个行对应的子数组也只会包含1个元素,因此序列化后会出现[["1a"],["1b"]]的嵌套结构。
解决方法
最简方案(仅确认是单列场景时使用)
直接调用数组的flat()方法拍平一层嵌套即可,刚好匹配单列场景的结构要求:const singleColValues = ss.getRange(你的单列范围).getValues().flat();序列化后输出即为
["1a","1b"],符合API要求。自动兼容多列/单列场景
若需要同时适配单列返回一维、多列返回二维的需求,可先获取当前范围的列数做判断:const range = ss.getRange(你的数据范围); const values = range.getValues(); // 单列拍平,多列保留原二维结构 const formattedValues = range.getNumColumns() === 1 ? values.flat() : values; const finalStr = JSON.stringify(formattedValues);低版本运行环境兼容方案
如果运行环境不支持ES6的flat()方法,可通过map遍历直接取每行的第一个元素:const singleColValues = ss.getRange(你的单列范围).getValues().map(row => row[0]);
内容的提问来源于stack exchange,提问作者SuperWoman
相关产品推荐
相关产品推荐

