JavaScript Google Tabellen: Zeile ausblenden, wenn Zelle x grün ist

(-_-)

Commander
Registriert
Feb. 2013
Beiträge
2.614
Hi,

ich habe bereits vor einiger Zeit in den Google Groups gefragt, jedoch bisher keine Antwort erhalten.

Folgendes Problem: Unsere Firma (Dienstleister für Objektortung) verschickt im Rahmen der Gewährleistung oft Tauschgeräte bei Defekt.
Bisher wurde dies mangels Warenwirtschaftssystem im Kalender vermerkt, und nach ein paar Wochen geprüft, ob uns die Kunden ihre Altgeräte zukommen ließen.
Um da kein großes Projekt draus zu machen, aber den Überblick besser zu behalten, habe ich ein einfaches Google-Formular (das Umfrage-Tool) angelegt und die Daten werden in Google Sheets eingefügt.

Leider kann bei uns Keiner JavaScript, wir benötigen eure Hilfe.
So schaut die Tabelle bisher aus:
bandicam 2016-08-03 11-17-13-491.jpg
Über das Formular wird nun eine Reihe mit IMEI und Versanddatum erstellt, wenn ein Gerät in unserem Posteingang landet, markiert ein Kollege es als "Zurück".
Da allerdings jedes Mal eine neue Reihe angelegt wird, sollen doppelte IMEIs coloriert und ausgeblendet werden.
Im Web habe ich ein Script gefunden, das Duplikate einfärbt. Hier habe ich nur die Farbe auf einen Grünton geändert.
Noch besser wäre, wenn die gesamte Zeile grün wird, aber das ist nicht zwingend notwendig.
Da jedoch diese Liste schnell lang und unübersichtlich wird, wäre es toll, wenn man nun noch die Zeilen mit grüner IMEI-Zelle ausblenden könnte.
Hier das bisherige Script:
Code:
function checkDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();
  var numRows = data.length;
  var numColumns = data[0].length;
  
  var formats = [];
  var values = [];
  for (var i = 0; i < numRows; i++) {
    formats[i] = [];
    for (var j = 0; j < numColumns; j++) {
      formats[i][j] = 'WHITE';
      if (data[i][j] != '') {
        values.push([data[i][j], i, j]);
      }
    }
  }
  var numValues = values.length;
    
  for (var k = 0 ; k < numValues - 1; k++) {
    if (formats[values[k][1]][values[k][2]] == 'WHITE') {
      for (var l = k + 1; l < numValues; l++) {
        if (values[k][0] == values[l][0]) {
          formats[values[k][1]][values[k][2]] = '#B6D7A8';
          formats[values[l][1]][values[l][2]] = '#B6D7A8';
        }
      }
    }
  }
      
  dataRange.setBackgroundColors(formats);
}

Für einen erfahrenen Coder sicherlich ein Kinderspiel, für mich leider eine Mammutaufgabe.
Könnte uns hier Jemand weiterhelfen?
 
Zuletzt bearbeitet:
Leider nicht.
Ich habe sowohl die Dokumentation als auch ein Tutorial zum Löschen von Zeilen angeschaut.
Theoretisch sollte man ja dort den Löschbefehl durch sheet.hideColumns ersetzen können, aber es führt nicht zum gewünschten Ergebnis.
 
Du willst ja auch keine Spalten verstecken, sondern die Zeilen. Daher hab ich dir ja auch die Funktion hideRow() verlinkt. Vielleicht wäre aber hideRows() für dich noch interessanter, da du ja eh schon über die verfügbaren Zeilen iterierst und dann schon die entsprechenden Zeilennummern hast. Dann machst du nur noch an den entsprechenden Stellen ein
Code:
sheet.hideRows(index)
und das wars (index sollte hierbei k bzw. l sein).
 
Zurück
Oben