【发布时间】:2019-09-30 20:41:14
【问题描述】:
我对 Google Apps Script 和 JavaScript 都很陌生,但我对两者之间的异同进行了广泛的阅读。然而,尽管如此,我似乎无法理解为什么我一直在研究的谷歌表格的这个自定义函数将在 Javascript 中正确运行,但不能在 GaS 中运行。
我的基本目标是检查名称列表,计算所有重复项,并显示出现次数最多的五个名称,以及它们出现的频率。下面的代码只考虑了最高的结果。
目前脚本如下:
//Initial Declarations
function watchList(data) {
var first = {};
var rcount = 0;
if (data === undefined){data = SpreadsheetApp.getActiveSheet().getRange("B2:B139")}; //Utilized for testing within the script editor
for (var i = 0; i < data.length; i++){//loop through the names
rcount = 0;// Reset duplicate count
for (var r = 0; r < data.length; r++) {//loop through the entire list again for each increment of the array above
if (data[i] === data[r]) {//Is this name a duplicate?
rcount++;//If yes, add 1 to the count
}
}
if (first.count == undefined || first.count < rcount) {//Does this value have the most duplicates?
first.name = data[i];//If so, assign the name and count values to the first object
first.count = rcount;
}
}
return [first.name, first.count];
}
不过,我返回的是:
first name on the list, 1
然后,当我将所有代码打入 javascript 编辑器并将结果记录到控制台时,它运行良好!稍作改动(考虑到没有附表)的javascript代码如下:
function watchList() {
var range = new Array('Name 1', 'Name 1',
'Name 1','Name 2',
'Name 2', 'Name 2',
'Name 2', 'Name 3');
var first = {};
var rcount = 0;
for (var i = 0; i < range.length; i++){
rcount = 0;
for (var r = 0; r < range.length; r++) {
if (range[i] == range[r]) {
rcount++;
}
}
if (first.count === undefined || first.count < rcount) {
first.name = range[i];
first.count = rcount;
}
}
console.log([first.name, first.count]);
return first.name;
}
watchList();
有人能告诉我我在这里遗漏了什么失误吗?提前致谢!
编辑 - 这已被链接为“如何比较 JS 数组”问题的副本,但至少在我看来,这是一个不同的问题,因为这是关于两个整个数组,而我的问题正在寻找以不同的速度将各个数组元素相互比较。
【问题讨论】:
-
getRange()不返回数组 -
欢迎。 @TheMaster 可能要提到的是,您需要使用
getValues()从范围中获取数据。所以它可能看起来像这样:data = SpreadsheetApp.getActiveSheet().getRange("B2:B139").getvalues();。 Doc Ref -
@Tedinoz,谢谢!知道了,很高兴知道,但最终,当它通过初始行(“watchList(data)”)连接到工作表时,这些值被作为一个数组拉出;我尝试通过将返回行设置为简单地“返回数据”来对此进行测试;如果然后在工作表上使用它,则会将整个数组吐出。
-
@TheMaster ,我认为这是一个不同的问题,因为这是比较整个数组,这是比较数组的元素与自身
标签: javascript google-apps-script google-sheets custom-function