繁体   English   中英

在 Google Sheets 中制作自定义 function,代码在工作表之外工作,但不在工作表中

[英]Making a custom function in Google Sheets, the code works outside of sheets but not in sheets

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

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

这是代码:

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之前,所有的逗号都将被替换为点。 尽管如此,对这个问题的任何见解都将不胜感激。 再次感谢你。

当您在电子表格中存储值时,具有 a ,值被视为strings ,而具有. 会被认为是numbers

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

电子表格中的值

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

记录值

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

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM