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

如何用Google Sheet Apps Script格式化JSON文本?

解决Google Sheet中JSON文本格式化的问题

你现在的代码没达到预期效果,核心问题有两个:

  • 单元格里的JSON是非标准格式:所有键名没有加双引号,不符合JSON规范,直接解析会报错
  • 代码没先把字符串转成JS对象,直接用JSON.stringify处理原字符串,只会输出转义后的原文本,不会格式化

下面是修正后的代码,能直接生成你想要的格式化效果:

function formatSheetJSON() {
  var ss = SpreadsheetApp.getActive();
  // 获取单元格里的原始JSON字符串
  var rawJson = ss.getRange('N145').getValue();
  
  // 第一步:把非标准JSON转成标准格式——给所有键名加上双引号
  var standardJson = rawJson.replace(/([{,]\s*)([a-zA-Z0-9_]+)(\s*:)/g, '$1"$2"$3');
  
  try {
    // 第二步:把标准JSON字符串解析成JS对象
    var jsonObj = JSON.parse(standardJson);
    // 第三步:格式化输出,缩进3个空格
    var formattedJson = JSON.stringify(jsonObj, null, 3);
    
    // 弹出格式化后的结果,也可以改成写入到其他单元格
    SpreadsheetApp.getUi().alert(formattedJson);
    // 示例:写入到O145单元格
    // ss.getRange('O145').setValue(formattedJson);
  } catch (err) {
    SpreadsheetApp.getUi().alert('解析出错:' + err.message);
  }
}

关键步骤说明:

  • 正则替换:replace方法匹配{或,后面的键名,自动给它们加上双引号,解决非标准JSON的问题
  • JSON.parse:将标准JSON字符串转换成可操作的JS对象
  • JSON.stringify的第三个参数3:指定格式化时的缩进空格数,让结构更清晰

运行这段代码后,就能得到你期望的带缩进、键名带双引号的格式化JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:07