Hola a todos, estoy trabajando en un conjunto de datos en Google Sheet y necesito obtener los datos aleatorios (número especificado) por los nombres de col 3 para auditar. Estoy usando el script de la aplicación de Google para lo mismo, pero no pude obtener los datos. Aquí está el código que probé, pero no quiero el% de datos. Quiero los datos aleatorios distribuidos equitativamente para cada empleado en la columna 3.
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var trn = ss.getSheetByName('Data'); var originalData = trn.getRange(2, 1, trn.getLastRow() - 1, 3).getValues(); var ReviewerEmail = data; var data = originalData.filter(function(item) { return item[1] === 'rob' || item[1] === 'john' || item[1] === 'toger'; }); //Logger.log(data); var targetsheet = ss.insertSheet(Reviewer); targetsheet.getRange(1, 1, data.length, data[0].length).setValues(data); } function getsampledata() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange('A:C'); var values = range.getValues(); var headers = values.shift(); var nameColumn = 1; var uniqueNames = values .map((row) => row[nameColumn]) .filter((item, i, ar) => ar.indexOf(item) === i) .filter(String); var data = [headers]; uniqueNames.forEach(function(name) { var nameEntries = values.filter((row) => row[nameColumn] == name); var entries = nameEntries.length; var tenth = Math.round((entries / 100) * 27.35); //Sampling Percentage for (i = 0; i < tenth; i++) { var random = Math.floor(Math.random() * nameEntries.length); data.push(nameEntries[random]); nameEntries.splice(random, 1); } }); return data; } 
Si desea un número específico de muestras, utilice un parámetro para indicar cuántas desea para cada una.
Guión de trabajo completo:
function getsampledata(sample) { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange('A:C'); var values = range.getValues(); var headers = values.shift(); var nameColumn = 2; var uniqueNames = values .map((row) => row[nameColumn]) .filter((item, i, ar) => ar.indexOf(item) === i) .filter(String); var data = [headers]; uniqueNames.forEach(function(name) { var nameEntries = values.filter((row) => row[nameColumn] == name); for (i = 0; i < sample; i++) { var random = Math.floor(Math.random() * nameEntries.length); data.push(nameEntries[random]); nameEntries.splice(random, 1); } }); return data; }