2016-12-18 1 views
1

Ich bin sehr neu in Google-Skripts und habe ähnliche Fragen wie die, die ich jetzt stelle, gelesen, aber die Kanonen scheinen den vorherigen Ratschlägen in das zu entsprechen, wonach ich suchen möchte. Ich habe ein einfaches "Ja/Nein" Drop-Down in Zelle A2 meines Blattes. Wenn „Ja“ gewählt wird, würde Ich mag Reihe verbergen 5 und 7. Ich habe auf der unten gearbeitet:Google Tabellen: Ausblenden von Zeilen basierend auf dem Zellenwert

Prior Year my onEdit(e) { 
    Logger.log('e.value: ' + e.value); 

var cellEdited = e.range.getA1Notation(); 
Logger.log('cellEdited: ' + cellEdited); 

if (cellEdited === "A2" && e.value === "yes") { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("TX MD 2017"); 
var maxRows = sheet.getMaxRows(); 

theSheet.hideRows(5,7); 
}; 
} 

Jede mögliche Unterstützung oder nudges wäre sehr hilfreich.

Antwort

0

-Code ist pingelig Fall

In ihrer Projektbeschreibung sprechen Sie über die Optionen ‚Ja‘/‚Nein‘, mit dem ‚Y‘ aktiviert wird, sein. Wenn dies tatsächlich der Fall ist, wird e.value === 'yes' nicht wie erwartet funktionieren. Achten Sie darauf, die Saiten den gleichen Fall zu machen, wenn sie zu vergleichen:

`e.value.toLowercase() === 'yes'` 

Falsche Funktion: Sheet.hideRows

Die API für hideRows heißt es, dass der erste Parameter der Reihe von zu starten, und der zweite Parameter ist, wie viele Zeilen nach der Startzeile versteckt werden sollen. Dadurch wird der Code die 7 Zeilen darunter und die 5 darunter verbergen. Wenn Sie Zeile 5 und 7 verstecken wollen, sollten Sie tun:

theSheet.hideRow(5); 
theSheet.hideRow(7); 

Vermeiden Sie das Hinzufügen unnötige Berechtigungen

Wenn Sie SpreadsheetApp.getActiveSpreadsheet Sie machen es so, müssen Sie das Skript ermöglichen, den Zugriff auf und Ändern Sie Ihre Tabellen. Dies bricht das Sicherheits-/Schutzprinzip von Least-Privileg; normalerweise möchten Sie einem Benutzer den geringstmöglichen Zugriff gewähren, um seine Aufgabe zu erledigen. Da Sie die Tabelle im Ereignisobjekt zugreifen können e.source verwenden, wäre es eine gute Idee, nur dass statt:

var ss = e.source; 
var sheet = ss.getSheetByName("TX MD 2017"); 

// You don't use maxRows, so get rid of it 
sheet.hideRow(5); // theSheet is not defined 
sheet.hideRow7); 

VORJAHR meint?

Dies ist kein gültiges JavaScript. Es sollte sein:

function onEdit(e) { 
    // code 
} 
Verwandte Themen