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

在Google Sheets中使用flatMap()解析JSON并拆分列的问题求助

解决Google Sheets中JSON数据拆分至多列的问题

问题场景

Google Sheets单元格中存储的JSON结构如下:

[{"value":"example1@example.com","isPrimary":true},{"value":"example2@example.com","isPrimary":false}]

需要将所有value值和isPrimary标识拆分到不同列,最终效果为:

example1@example.com | true | example2@example.com | false

原代码const SAMPLE = value => [JSON.parse(value).result.flatMap((...))];无法实现需求,问题出在:

  • 解析后的JSON本身就是数组,不存在result属性
  • 未正确遍历数组提取目标字段

可行解决方法

方法一:Google Apps Script自定义函数

编写一个自定义函数,解析JSON后提取所需字段并平铺成一维数组:

function SPLIT_JSON_EMAILS(jsonText) {
  if (!jsonText) return [];
  try {
    const data = JSON.parse(jsonText);
    // 遍历每个对象,提取value和isPrimary后平铺成一维数组
    return data.flatMap(item => [item.value, item.isPrimary]);
  } catch (e) {
    return ["解析错误:无效JSON格式"];
  }
}

使用方式:在目标单元格输入=SPLIT_JSON_EMAILS(A1)(替换A1为存储JSON的单元格),结果会自动填充到右侧的列中。

方法二:使用Google Sheets内置公式(无需脚本)

如果不想用脚本,可结合内置公式实现:
假设JSON在A1单元格,在B1输入以下公式:

=FLATTEN(ARRAYFORMULA({JSON_EXTRACT_ARRAY(A1, "$[*].value"), JSON_EXTRACT_ARRAY(A1, "$[*].isPrimary")}))

该公式会先分别提取所有value和isPrimary组成的数组,再合并后平铺成一行,直接拆分到多列中。


内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:22:48