Nehmen wir die folgende Tabelle mit Brettspielen:
Im folgenden werde ich zeigen, wie sich automatisch alle Spiele ausblenden lassen, die auch mit 5 oder mehr Spielern gespielt werden können.
Dazu wechseln wir in den Skripteditor (Tools -> Skripteditor) und legen zuerst einen neuen Menüpunkt an, mit dem wir das Skript später aufrufen wollen:
function onOpen() { var ss = SpreadsheetApp.getActive(); var items = [ {name: '5 oder mehr Spieler', functionName: 'fuenfSpieler'} ]; ss.addMenu('Spielerzahl', items); };
Damit haben wir einen Menüpunkt "Spielerzahl" eingerichtet. Über den Unterpunkt "5 oder mehr Spieler" wird sich später die Funktion fuenfSpieler() aufrufen lassen. Wenn wir jetzt speichern und die Datei einmal schließen und dann erneut öffnen, können wir in der Menüleiste bereits unseren neuen Menüpunkt sehen. Aber bevor das Menü verwendet werden kann, müssen wir die Funktion fuenfSpieler() mit Inhalt füllen.
Wir öffnen wieder den Skripteditor und deklarieren unsere Funktion:
function fuenfSpieler() { // Aktives Spreadsheet auswählen var ss = SpreadsheetApp.getActiveSpreadsheet(); // Aktives Tabellenblatt auswählen var sheet = ss.getActiveSheet(); // Datenbereich auswählen var data = sheet.getDataRange(); // Anzahl der Zeilen ermitteln var lastRow = data.getLastRow()+1; // Gehe durch alle Zeilen for(var i=1; i<lastRow; i++) { // Prüfe ob die Spalte 4 ("Max. Spieler") eine Zahl kleiner als 5 enthält if(data.getCell(i, 4).getValue() < 5) { // Blende Zeilen aus, die dem Kriterium entsprechen sheet.hideRows(i); } } }
Zum Ausblenden der Zeilen verwenden wir die Methode hideRows(rowIndex).
Gehen wir nun zurück in unser Spreadsheet und rufen den Menüpunkt "5 oder mehr Spieler" auf. Eventuell müssen dem Skript zuerst noch die entsprechenden Berechtigungen erteilt werden. Die Google Apps passen auf, dass Skripte nur auf diejenigen Daten Zugriff erhalten, deren Besitzer dem zustimmt.
Das Ergebnis sieht aus wie folgt:
Alle Datensätze, die eine Zahl kleiner als 5 in der Spalte D ("Max. Spieler") haben, sind nun ausgeblendet. Mit einem Klick auf die kleinen Pfeile am linken Tabellenrand können sie wieder eingeblendet werden.
Um bei Bedarf alle Zeilen wieder einblenden zu können, fügen wir jetzt noch einen Menüpunkt hinzu. Dafür fügen wir der Funktion onOpen() im Skripteditor eine weitere Zeile hinzu:
function onOpen() { var ss = SpreadsheetApp.getActive(); var items = [ {name: '5 oder mehr Spieler', functionName: 'fuenfSpieler'}, {name: 'Alle Spiele anzeigen', functionName: 'alleZeigen'} ]; ss.addMenu('Spielerzahl', items); };
Damit die Funktion alleZeigen() auch tut, was wir wollen, müssen wir sie deklarieren und mit Inhalt füllen:
function alleZeigen() { // Aktives Spreadsheet auswählen var ss = SpreadsheetApp.getActiveSpreadsheet(); // Aktives Tabellenblatt auswählen var sheet = ss.getActiveSheet(); // Datenbereich auswählen var data = sheet.getDataRange(); // Anzahl der Zeilen ermitteln var lastRow = data.getLastRow()+1; // Zeige alle Zeilen wieder an sheet.showRows(1, lastRow);Mit der verwendeten Methode showRows(rowIndex,numRows) können wir nun, nach einem erneuten Schließen und Öffnen der Datei, alle Zeilen, von der ersten, bis zur letzten (lastRow) wieder anzeigen lassen.
Funktioniert tadellos. Herzlichen Dank!
AntwortenLöschen