在Google表格中创建自定义功能,该代码在工作表外部但不在工作表中工作

问题描述 投票:0回答:1

因此,我正在为Google表格编写一个自定义函数,该函数应该采用一行或单元格,生成一维数组,并使用该数据创建URL。基本上是这样,因此我可以帮助我的朋友跟踪视频游戏中某件商品的价格。

我已经在Google表格之外的javascript环境中运行了代码,并且一切正常。但是,当我将代码放在脚本编辑器中时,它会以意外的行为运行。单元格的范围将始终为1行乘13列,但某些列可能为空,因此该脚本应截断值数组,以便没有空索引。然后应该插入一个“。”在将每个值连接成字符串以产生最终URL时,它们之间的关系。由于某些原因,它不会删除任何值和“。”。在单元格中创建URL时为“,”。

这里是代码:

function STONKLINK(prices, premrkt) {
  var webLink = "https://turnipprophet.io?prices=";
  var priceLink = "";

  for (i = (prices.length - 1); prices[i] == 0; i--){
    prices.pop();
  }
  for (i = 0; i < prices.length; i++) {
    priceLink = (priceLink + prices[i] + ".") 
  }

  priceLink = priceLink.substring(0, priceLink.length - 1);

  if (premrkt == "N/A") {
    webLink = webLink + priceLink;
  } else if (premrkt == "Fluctuating") {
    webLink = webLink + priceLink + "&pattern=0";
  } else if (premrkt == "Small Spike") {
    webLink = webLink + priceLink + "&pattern=3";
  } else if (premrkt == "Large Spike") {
    webLink = webLink + priceLink + "&pattern=1";
  } else if (premrkt == "Decreasing") {
    webLink = webLink + priceLink + "&pattern=2";
  }
  return webLink;

}

非常感谢您的帮助。非常感谢。

编辑:虽然我仍然不明白为什么会发生这种情况,并且我想了解,但我已经添加了一个简单的解决方法。通过添加以下代码行

webLink = webLink.replace(/,/g, ".");

return之前,所有逗号将替换为点。尽管如此,对问题的任何见解将不胜感激。再次谢谢你。

javascript google-sheets spreadsheet
1个回答
0
投票

[将值存储在电子表格中时,具有,的值将被视为strings,而具有.的值将被视为numbers

例如,如果您将这些值存储在B列中:

values in spreadsheet

如果登录typeof(val1)typeof(val2)(其中val1val2分别是存储在B1中的值B2,这将是您得到的:

logging the values

所以您遇到的问题是由于这个事实。工作表中存储的值是数字,当您尝试构建webLink字符串时,它们将转换为字符串-因此,数字的.变为,

参考

© www.soinside.com 2019 - 2024. All rights reserved.