谷歌脚本连接而不是添加

Google Scripts Concatenating rather than adding

本文关键字:添加 脚本 连接 谷歌      更新时间:2023-09-26

当我运行脚本而不是添加我认为应该是两个数字时,它会连接。。。

我觉得我在看Abbot和Costello的戏。https://www.youtube.com/watch?v=9o1SAS8KyMs

  var weekNum = e.parameter.weekListBox;
  weekNum = weekNum + 3;

weekListBox的值从1到15。我正试图把它抵消3。

然而,1+3得到13,而不是我所期望的4。让我发疯,直到我意识到为什么会发生这种事。

那么我该如何添加呢?

感谢

事实证明,这是唯一对我有效的解决方案……非常奇怪的问题。

谷歌电子表格脚本getValues-强制int而不是字符串

由蹄目回答

使用一元"+"运算符可以很容易地做到这一点,如下所示:

首先使用getValue()或getValues()。假设您得到两个这样的值,并将它们存储在A=1中并且B=2。您可以通过使用数学二进制运算符,除了+,它连接字符串,所以A-B=-1,而A+B将返回"12"。

只需使用+一元即可强制变量为数字具有任何可能被解释为字符串的变量的运算符。对于例如,+A++B将返回正确的值3。

上面的答案解释了这个问题,但没有提供解决方案(注释中除外,但parseInt()不是唯一/最好的解决方案)。

出现此问题的原因是e.parameter.weekListBox;返回的值实际上是一个字符串(除了日期对象之外,实际上总是这样),因此得到的结果是正常的字符串串联(字符串+数字=新字符串)。

一个简单的解决方案是如下更改代码:

  var weekNum = Number(e.parameter.weekListBox);// make it a number
  weekNum = weekNum + 3;// and the result will be a sum

参见

function myFunction() {
    var aa = 1;
    var ab = aa + 3;
    var ba = "1";
    var bb = ba + 3;
}

ab=4但是bb="13"