Google Scripts连接而不是添加

时间:2014-09-07 16:43:48

标签: javascript google-apps-script

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

我觉得我在看艾博特和科斯特洛的位置。 https://www.youtube.com/watch?v=9o1SAS8KyMs

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

weekListBox的值为1到15。 我试图将它抵消3。

然而,1 + 3产生13,而不是我预期的4。开车送我疯了,直到我意识到为什么会这样。

那么如何才能添加呢?

由于

3 个答案:

答案 0 :(得分:1)

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

Google Spreadsheet Script getValues - Force int instead of string

hoogamaphone回答

  

您可以使用一元' +'轻松完成此操作。运算符如下:

     

首先使用getValue()或从电子表格中获取您的值   的GetValues()。假设您得到两个这样的值,并将它们存储在A = 1中   和B = 2.您可以使用任何强制它们被识别为数字   数学二元运算符除了+,它连接字符串,所以A -   B = -1,而A + B将返回' 12'

     

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

答案 1 :(得分:0)

function myFunction() {
    var aa = 1;
    var ab = aa + 3;

    var ba = "1";
    var bb = ba + 3;
}

ab = 4 但 bb =“13”

答案 2 :(得分:0)

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

你遇到这个问题的原因是e.parameter.weekListBox;返回的值实际上是一个字符串(除了日期对象的日期之外总是如此)所以结果你get是正常的字符串连接(string + number = new string)。

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

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