2017-06-26 2 views
0

Also habe ich ein Blatt wie hier zu sehen. https://docs.google.com/spreadsheets/d/1r2ogg1ldR0CFjOJ6mVObY-WRVipJx_X3pQ0yM2HYEog/edit?usp=sharing.Google Apps Script Aus jeder Zeile eine zufällige Zelle nehmen

Ich versuche, ein Skript zu schreiben, das jede Zeile im Bereich A1: D durchläuft und eine zufällige Zelle auswählt, um sie in die F-Spalte derselben Zeile einzufügen.

Ich bin neu bei GAP, also bin ich nicht sicher, wie man das genaue Skript dafür schreibt. Das ist, was ich habe bisher

function random() { 
     var sss = SpreadsheetApp.getActiveSpreadsheet(); 
     var ss = sss.getSheetByName('Sheet1'); //the sheet that has the data 
     var range = ss.getRange('A1:D'); //the range I need 
     var data = range.getValues(); 

     for(var i = ; i < data1.length; i++) { //at this point im just guessing based on online codes 
      = Math.floor(Math.random()*(j+1)); //method of randomization 
      ss.getRange('the i row of F column').setValue(data[i][1]); //choosing the row that is being used, selecting the first item of the shuffled array 
     }; 
     } 
+0

Woher kommt Ihr "j" -Wert? Welche Variable sollte mit der Formel = Math.floor (Math.random() * (j + 1)) instanziiert werden; ? –

+0

sorry für die verwirrung, ich meinte das als die werte der verschiedenen spalten. – User9123

Antwort

1

Sie haben die Lösung ziemlich nahe gewesen:

function random() { 
    var sss = SpreadsheetApp.getActiveSpreadsheet(); 
    var ss = sss.getSheetByName('Sheet1'); //the sheet that has the data 
    var range = ss.getRange(1,1,ss.getLastRow(), 4); //the range you need: 4 columns on all row which are available 
    var data = range.getValues(); 

    for(var i = 0; i < data.length; i++) 
    { 
    var j = Math.floor(Math.random()*(data[i].length)); //method of randomization 
    var element = data[i][j]; // The element which is randomizely choose 
    ss.getRange(i+1, 6).setValue(element); 
    } 
} 

ich eine Änderung an Ihrem Orignal-Code hinzugefügt haben:

getLastRow() erhalten die Position der letzten Reihe, die verwendet wird. Andernfalls sammeln Sie ein Array in der Größe Ihres gesamten Blattes.

Die Math.random() - Funktion multipliziert sich mit der Größe einer Zeile, so dass Sie so viele Spalten haben können, wie Sie möchten.

+0

Vielen Dank. macht auch die getlastrow() methode einen unterschied, wie in der leistung, im vergleich zu dem, was ich getan habe? – User9123

+0

Ja. Bei Ihrer Methode erhalten Sie ein Array in der Größe Ihres Blattes (also etwa 1000 Zeilen, die Standardanzahl der Zeilen in einem Blatt). Die Methode getLastRow() sucht in der letzten Zeile, in der etwas geschrieben wird. In diesem Fall wird Ihr Array nur die Größe Ihrer 7-Zeile haben. –

Verwandte Themen