无法将NaN转换为(类)

时间:2016-12-12 21:58:06

标签: google-apps-script google-sheets

在撰写Google Apps脚本时,我遇到了这个错误:

  

“无法将NaN转换为(类)。(第19行,文件”代码“)

有问题的一行:

pos[pos.length] = 
   ss.getSheets()[sheetNumber + 13].getRange(teamRow + i, teamCol + 1).getValue();

我搜索了stackoverflow,但我能找到的最好的是“getRange”没有被传递整数。但是,我从整数派生teamRow和teamCol,我是for循环的索引,也是一个整数。

只有在通过其他功能调用我的功能时才会出现此错误。

最后一个问题:错误意味着什么,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:0)

NaN表示不是数字。它基本上用于浮点运算,以表示不能使用约定表示值。您可以查找IEEE 754以获取更多详细信息。

您的错误消息通知您,在脚本中,您在禁止它的表达式中使用NaN值。 要跟踪它,您可以使用局部变量来存储中间值,从而简化您的生活。然后,您可以使用调试器或记录它们来检查它们,如评论中所示。

例如:

var allSheets = ss.getSheets();
var targetSheetIndex = sheetNumber + 13;
var targetSheet = allSheets[targetSheetIndex];
var targetRow = teamRow + i;
var targetCol = teamCol + 1;
var targetCell = targetSheet.getRange(targetRow, targetCol);
var targetValue = targetCell.getValue();

使用这种技术,您可以通过测试(存在测试,边界测试......)来识别代码可能会失败并防止其失败。之后,您可以使用原始单行或单行与上述拆分示例之间的平衡重新组合代码。