在Spreadsheet Fetch代码中添加三元运算符避免解构空值错误
解决Google表格数据解析中的解构错误与空单元格替换问题
问题背景
原代码在获取Google表格数据时,遇到空单元格会抛出Cannot destructure property 'v' of 'object null' as it is null错误。尝试添加三元运算符[data["cols"][index]["label"]]: value ? value : ' '未解决问题,因为错误发生在解构{v: value}的步骤,而非赋值阶段。
修复方案
错误核心是:当单元格为空时,row["c"]数组中的对应元素为null,直接解构{v: value}会触发报错。需先判断单元格对象是否有效,再安全取值:
修改map和reduce的处理逻辑如下:
products = data["rows"].map((row) => row["c"].reduce( (product, cell, index) => { // 安全获取单元格值,空值替换为空格 const value = cell?.v ?? ' '; return { ...product, [data["cols"][index]["label"]]: value }; }, {} ) );
关键逻辑说明
cell?.v:使用可选链运算符,若cell为null或undefined,直接返回undefined,避免解构时的报错?? ' ':使用空值合并运算符,当cell?.v为null或undefined时,自动替换为空格- 不再直接解构
{v: value},改为先接收完整的cell对象,从根源规避解构null对象的问题
如果需要兼容不支持ES2020语法的环境,可改用三元运算符实现:
const value = cell && cell.v ? cell.v : ' ';
内容的提问来源于stack exchange,提问作者Dendenzilla
相关产品推荐
相关产品推荐

