Google Appscript莫名报错“Must only be whole numbers.” 无修改突然失效如何解决
报错原因及排查方案
这个Must only be whole numbers.报错是Google Apps Script近期对表格操作接口的参数校验规则收紧导致的,和你代码本身的逻辑无关,之前运行正常是旧版接口没有做严格的整数校验。
常见触发场景:
- 调用
getRange()、insertRows()、setRowHeight()这类原生表格方法时,传入的行号、列号、数量、尺寸参数带小数位,哪怕是1.0这类数值类型为浮点数的整数值,也会触发校验失败 - 从表格单元格读取的数值、经过四则运算产生的数值存在浮点数精度误差,比如计算后得到2.0000000001、3.9999999999这类近似整数的数值,直接传入原生方法就会报错
- 涉及游戏内货币、道具数量计算的逻辑中,把非整数值直接传给了需要整数参数的自定义或原生接口
排查步骤:
- 先注释掉
Logger.log()之前所有的表格读写操作,仅保留日志输出逻辑,确认报错来源:该报错大概率是前面的操作延迟抛出,和Logger.log()本身无关 - 给所有传入原生表格方法的数值参数统一加
Math.round()或parseInt()做强制整数转换,避免浮点数精度问题导致的隐形小数 - 检查所有货币、购买相关的计算逻辑,确认所有计数类数值输出都是整数格式,没有保留小数位的情况
如果按上述步骤排查后还是无法定位问题,可以把200行代码脱敏后贴出进一步排查。
内容的提问来源于stack exchange,提问作者Akyer
相关产品推荐
相关产品推荐

