如何从Google Sheets单个单元格的TTN JSON数据中提取指定decoded.payload字段至独立单元格
解决TTN JSON数据拆分到Google Sheets独立单元格的问题
我来帮你搞定这个问题!你现在的情况是The Things Network把整段JSON数据直接塞进了Google Sheets的单个单元格,想要把decoded.payload里的四个数据点分别提取到独立单元格对吧?下面给你两种实用的解决方案,从简单到灵活都有:
方法一:用Google Sheets内置函数(适合非代码用户)
如果你的Google Sheets已经支持JSONPARSE函数(这是Google近年推出的原生JSON处理函数),操作超简单:
假设整段JSON数据在A1单元格,你只需要在其他单元格输入对应的提取公式:
- 提取
I1I_Overflade:=JSONPARSE(A1, "decoded.payload.I1I_Overflade") - 提取
I2I_Dybde:=JSONPARSE(A1, "decoded.payload.I2I_Dybde") - 提取
I3I_Klarhed:=JSONPARSE(A1, "decoded.payload.I3I_Klarhed") - 提取
I4I_Lys:=JSONPARSE(A1, "decoded.payload.I4I_Lys")
每个公式对应一个单元格,直接就能得到单独的数据点。如果你的Sheet版本不支持JSONPARSE,可以试试方法二。
方法二:用Google Apps Script(灵活批量处理)
如果需要批量处理多行数据,或者你的Sheet不支持原生JSON函数,用Apps Script是更稳妥的选择:
- 打开你的Google Sheet,点击菜单栏的「扩展程序」→「Apps Script」
- 删除默认的
myFunction代码,粘贴下面的自定义函数:
function extractPayloadData(jsonText) { if (!jsonText) return []; try { // 解析JSON字符串 const ttnData = JSON.parse(jsonText); // 定位到decoded.payload部分 const payload = ttnData.uplink_message.decoded_payload; // 按顺序返回需要的四个字段,你可以根据需求调整顺序或增减字段 return [payload.I1I_Overflade, payload.I2I_Dybde, payload.I3I_Klarhed, payload.I4I_Lys]; } catch (error) { // 解析出错时返回提示信息 return ["JSON解析错误: " + error.message]; } }
- 点击保存按钮,给你的项目起个名字(比如
TTN-Payload-Extractor) - 回到Sheet,在B1单元格输入
=extractPayloadData(A1),按回车后,四个数据会自动填充到B1到E1的单元格里(函数返回的数组会自动扩展到相邻单元格)- 第一次运行会弹出授权提示,按照页面指引完成授权即可(这是Google的安全验证,放心授权)
额外小提示
如果你的TTN是通过Webhook直接推送数据到Google Sheets,其实可以在TTN的Webhook设置里直接指定只发送decoded.payload的内容,这样后续就不用再拆分了——不过如果已经推送了整段JSON,上面的两种方法完全能解决问题。
内容的提问来源于stack exchange,提问作者Cheide
相关产品推荐
相关产品推荐

