我有一个脚本可以随机排列数组中的值。这些值代表有空的人。当它们不可用时,它们将从阵列中移除。我希望使这个数组“动态”,因为它根据工作表中值的数量调整范围。
我已经尝试创建一个命名范围,但这并不能消除更改命名范围大小的手动任务。从数组中删除一个人将导致空白单元格与其他值混入。我尝试过使用 .filter() 函数进行试验,但在 JS 和应用程序脚本方面我相当业余。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test Sheet");
var candidates = ss.getRange("Test Sheet!B2:B10").getValues();
var arrayValues = ss.getRange("Test Sheet!F1:F12").getValues();
for (var x = 0; x < arrayValues.length; x++) {
var range = ss.getRange(1, 6, 12);
var array = range.getValues();
shuffleArray(array);
range.setValues(array);
}
}
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
使范围动态化或忽略数组中的空白单元格是我的目标。
最佳答案
- 您想从
var range = ss.getRange(1, 6, 12)
中随机化“F1:F12”的单元格。 - 例如,如果“F1:F12”的值是
["a", "b", "", "c", "d"]
,你想这样做[“b”、“a”、“d”、“c”]
。- 您想删除空单元格。
如果我的理解是正确的,这个修改怎么样?我觉得你的情况,可以使用randomize()
的方法。
修改后的脚本:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.getRange("Sheet1!F1:F12").randomize();
}
引用:
关于arrays - 如何为已打乱的数组添加依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54717266/