我一直在制作一个脚本来查找与昵称相关的数字(等级)。我为此创建了一个自定义函数。基本上,公式输入在昵称数组中找到该输入(昵称),它通过添加 2 将数组顺序转换为行号(+1,因为数组从 0 开始,并且由于我的列的索引而 +1)。之后,它会转到排名号所在的列,这就是它返回的内容。
该脚本运行良好,但是当我更新排名数字时,公式并不总是返回新值(但如果我再次运行公式,它会返回)所以我认为问题是执行它或者我的因为我已经设置了设置,电子表格并没有真正每分钟重新计算一次。
有什么问题,我该如何解决?谢谢!
这是自定义函数的代码:
/**
* Finds the rank of the inputed user
*
* @customfunction
*/
function FINDRECRUITRANK(Recruit_Name) {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var display = ss.getSheetByName("DisplaySheet");
var lastRow = display.getRange("B133").getValue(); //B133 has a counter of total rows used
var allnicknamesbeta = display.getRange(2, 3, lastRow-1).getValues();
var allnicknames = allnicknamesbeta.map(function(r){ return r[0]; });
var index = allnicknames.indexOf(Recruit_Name) + 2; // +1 because array starts from 0 and +1 because of the first row index
var recruitRank = display.getRange(index, 4).getValue();
return recruitRank;
}
第一列是分配有数字的名称列表(排名)。5th clumn 有recruit_name。该函数的作用是在第一列中查找招聘名称,在这种情况下它将位于 (2,1) 上,然后复制分配给它的数字(排名,在这种情况下位于单元格 (2,2) 上)。这就是函数将返回的内容-> 2。当我将 2 更改为 3(或任何其他数字!=2)时,问题就出现了,现在单元格(2,2)将有一个 3,但作为单元格(1,5)的函数输入没有改变,这就是为什么return 没有得到更新。
公式的返回不在图片中,但它可能在例如 (1,6) 中。