Я хочу отредактировать Google Script, чтобы он перетасовал указанную строку c на указанный лист c - PullRequest
1 голос
/ 19 марта 2020

В этом примере я пробовал этот код:

function shuffleRows() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var lr=sh.getLastRow();
  sheet.sort(function(a,b){return Math.floor(Math.random()*range)-Math.floor(Math.random()*range);
  });
  rg.setValues(sheet);
}

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Shuffle ZOO",
    functionName : "shuffleRows",
  }];
  sheet.addMenu("Shuffle ZOO", entries);
};

Он отлично работает, когда нужно перетасовать весь лист. Однако мне нужен скрипт, чтобы перетасовать определенный c диапазон, то есть I2: I8 в конкретном c листе, то есть Ark 5.

Я думаю, что я должен заменить на эту строку:

  var sheet = SpreadsheetApp.getActive().getSheetByName("Ark5");
  var range = sheet.getRange("I2:I8");

Что мне нужно отредактировать?

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Попробуйте это:

function runOne(rs,re) {
  var rs=rs||2;//row start
  var re=re||8;//row end
  var ss=SpreadsheetApp.getActive()
  var sh=ss.getSheetByName("Ark5");
  var rg=sh.getRange(rs,1,re-rs+1,sh.getLastColumn());
  var vA=rg.getValues();
  var iA=[];//The index array
  vA.forEach(function(r,i){iA.push(i)});
  var oA=[];
  iA.sort(function(a,b){return Math.floor(Math.random()*iA.length)-Math.floor(Math.random()*iA.length);});//apply sort to index array
  iA.forEach(function(e,i){oA.push(vA[iA[i]]);});//reposition rows based upon sorted index array
  sh.getRange(rs,1,oA.length,oA[0].length).setValues(oA);//post repositioned rows
}
0 голосов
/ 19 марта 2020

Я наконец получил его, хотя я не уверен, что это лучшее решение.

function shuffleRows() {
//  var sheet = SpreadsheetApp.getActive().getSheetByName("Ark5");
//  var range = sheet.getRange("I2:I8");


  var ss=SpreadsheetApp.getActive().getSheetByName("Ark5");
  var sh=ss;
  var rg=sh.getRange("I2:I8");
  var vA=rg.getValues();
  var lr=sh.getLastRow();
  vA.sort(function(a,b){return Math.floor(Math.random()*lr)-Math.floor(Math.random()*lr);
  });
  rg.setValues(vA);
}

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Bland alle dyrene",
    functionName : "shuffleRows",
  }];
  sheet.addMenu("Bland alle dyrene", entries);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...