Как добавить зависимость для перетасованного массива? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть скрипт, который перемешивает значения в массиве.Эти значения представляют людей, которые доступны.Когда они недоступны, они удаляются из массива.Я хочу сделать этот массив "динамическим", так как он регулирует диапазон в зависимости от количества значений в листе.

Я пытался создать именованный диапазон, но это не устраняет ручную задачу изменения размера именованного диапазона.Удаление человека из массива приведет к перемешиванию пустой ячейки с другими значениями.Я пытался поэкспериментировать с функцией .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;
  }
}

Либо создание динамического диапазона, либо игнорирование пустых ячеек в массиве - это моецель.

1 Ответ

0 голосов
/ 20 февраля 2019
  • Вы хотите рандомизировать ячейки "F1: F12" из var range = ss.getRange(1, 6, 12).
  • Например, если значение "F1: F12" равно ["a", "b", " ", "c", "d"], вы хотите сделатьэто как ["b", "a", "d", "c"].
    • Вы хотите удалить пустые ячейки.

Если мое понимание верно, как насчет этой модификации?Я думаю, что в вашей ситуации можно использовать метод randomize().

Модифицированный скрипт:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getRange("Sheet1!F1:F12").randomize();
}

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...