接收用户输入后Apps Script恢复执行出错问题排查
问题原因分析
以下是导致部分JSON执行出错的核心原因:
JSON结构不匹配
脚本硬依赖jsonObject.Single层级的对象,如果传入的JSON里没有Single字段,或者Single不是对象类型(比如是字符串、数字、null),调用myObj.hasOwnProperty()时会直接触发TypeError,脚本直接终止,日志里看不到后续执行记录。表头获取逻辑存在漏洞
代码用sheet.getFrozenRows()定位表头行,如果Sheet7没有冻结任何行,headerRow的值为0,这时offset(headerRow - 1, 0, 1)会变成offset(-1, 0, 1),属于非法参数,会抛出异常导致脚本中断。若用户修改过表格冻结设置,就可能触发这个问题。脚本未完成写入操作(隐性问题)
addRowFromObject函数仅生成对应表头的行数据数组,但主函数importJsonToSheet没有调用sheet.appendRow(newRow)这类写入表格的方法。你认为“正常执行”的那些JSON,其实只是脚本没报错,但并没有实际把数据写入表格——若要解决这个问题,需要在主函数里补充写入逻辑,比如:var newRow = addRowFromObject(jsonObject.Single, sheet); sheet.appendRow(newRow);特殊属性值的潜在问题
若某些JSON里Single对象的属性值包含特殊类型(比如Google Apps Script不兼容的对象、循环引用),即便JSON.parse能解析,遍历属性时也可能触发未知错误,导致脚本终止。
内容的提问来源于stack exchange,提问作者user1592380
相关产品推荐
相关产品推荐

