为何谷歌应用脚本服务端不再向客户端传递值为null的对象键值对?
故障原因
这是Google Apps Script平台侧无公告更新导致的序列化逻辑变更:2023年末平台更新后,google.script.run 传递服务端返回值时,会自动删除所有值为null的键,不会将这类键值对传递到前端,导致依赖null值的组件无法正常运行,大量GAS开发者都遇到过同类故障,并非你的代码逻辑问题。
修复方案
最稳妥的解决方案是手动控制序列化/反序列化流程,绕过平台默认的异常序列化逻辑,操作步骤如下:
1. 修改服务端GS代码
不要直接返回JS对象,先将对象序列化为JSON字符串再返回:
function returnObject(){ var object = {} object.a = "123" object.b = null object.c = 123 console.log(object) return JSON.stringify(object) }
2. 修改前端JS代码
拿到服务端返回的字符串后,手动反序列化为JS对象,即可完整保留null值键:
function afterDataReceived(receivedData){ const parsedData = JSON.parse(receivedData) console.log(parsedData) // 后续正常使用parsedData即可,此时parsedData.b为null,不会丢失 }
该方案经过大量开发者实测,完全兼容原有业务逻辑,不会产生额外问题。
备选兼容方案
如果不想改动原有序列化逻辑,也可以在服务端将null替换为自定义占位符(比如字符串__NULL__),前端拿到数据后再将占位符替换回null,适合需要兼容旧代码批量修改的场景。
内容的提问来源于stack exchange,提问作者Radek
相关产品推荐
相关产品推荐

