【发布时间】:2019-02-15 21:25:11
【问题描述】:
我有一个脚本可以对数组中的值进行洗牌。这些值代表可用的人。当它们不可用时,它们将从阵列中移除。我希望使这个数组“动态”,因为它根据工作表中的值的数量调整范围。
我已尝试创建命名范围,但这并不能消除更改命名范围大小的手动任务。从数组中删除一个人将导致空白单元格与其他值一起洗牌。我尝试过使用 .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;
}
}
要么使范围动态化,要么忽略数组中的空白单元格是我的目标。
【问题讨论】:
-
我可以问你关于
ignorings the blank cells in the array的事吗?例如,如果范围内的值为["a", "b", "", "c", "d"]和["", "b", "", "c", "d"],您是否分别需要["b", "d", "a", "c", ""]和["b", "d", "c", "", ""]? -
嗨@Tanaike!在 ["a", "b", " ", "c", "d"] 的情况下,期望的结果将是 ["a", "b", "c", "d"] 的随机化洗牌中省略了空白。这些值代表将“可用”的人。数组中的空白本质上是刚刚被移动到 Google 表格的“不可用”列的人。我希望这有助于澄清我的目标!
-
感谢您的回复。我发布了一个答案。你能确认一下吗?如果我误解了你想做什么,我很抱歉。届时,能否提供更多信息?例如,这些是示例电子表格以及您想要的输入和输出。我想修改脚本。
标签: arrays algorithm if-statement google-apps-script google-sheets