[英]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)
(其中val1
和val2
分别是存储在B1
中的值B2
),您将得到以下结果:
所以你遇到的问题是由于这个事实。 您存储在工作表中的值是数字,当您尝试构建webLink
字符串时,它们会转换为字符串 - 因此, .
一个数变成,
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.