2017-09-28 17 views
0

ich war in der Lage zu setzen, die Farbe eines Tabs in Google Tabellen zu ändern, diesen Code verwenden ich an anderer Stelle gefunden:Wie Google Registerkarte Blätter Farbe mit Schaltergehäuse

function onEdit(e) { 
    if (e.range.getA1Notation() != 'D1') return 
    e.source.getActiveSheet() 
     .setTabColor(e.value == 'Asphalt' ? 'red' : null) 
} 

Allerdings würde Ich mag Lage sein, Veränderungen tatsächlich Die Registerkartenfarbe basiert auf einer Reihe von Optionen mit Switch Case. Hier ist, was ich bisher aber es funktioniert nicht

function onEdit(e) { 
    var ss = e.SpreadsheetApp.getActiveSpreadsheet() 
    var trade = ss.getRange("D1") 
    switch(trade){ 
    case "Asphalt": 
     e.setTabColor("0000FF"); 
     break; 
    case "Cabinetry": 
     e.setTabColor("FF0000"); 
     break; 
    default: 
     e.setTabColor("008000"); 
} 
} 
+0

die e ändern Was ist das Problem? Bitte sehen Sie [ask] – glennsl

+0

Ich bin nicht vertraut mit der Spreadsheets-API, aber in Ihrem Switch-Block, rufen Sie versuchen, eine 'setTabColor'-Funktion für den Ereignisparameter aufzurufen. Aber Ihr erstes Beispiel, die 'setTabColor', ist auf was immer von getActiveSheet zurückgegeben wird. Mit anderen Worten, ersetzen Sie in Ihrem Schalterblock 'e.setTabColor()' durch 'ss.setTabColor()' – ABabin

Antwort

0

Ihre ganz in der Nähe, ein paar Fragen wie folgt:

var ss = e.SpreadsheetApp.getActiveSpreadsheet() 

Der e Parameter gibt ein Objekt verschiedene Informationen über die Bearbeitung enthält, Veranstaltung.

e.source gibt das Spreadsheet Objekt zurück, wo die Änderung aufgetreten ist. Wechseln Sie also zu:

var ss = e.source.getActiveSheet(); Um das tatsächliche Blatt zu erhalten, wo die Änderung aufgetreten ist.

Jetzt ss ist das aktive Blatt var trade = ss.getRange("D1") wird die Zelle bekommen, aber Sie müssen den Wert von dieser Zelle erhalten. So ändern:

var trade = ss.getRange("D1").getValue(); To get the value in the cell. 

In Ihrem Schalterblock ss

function onEdit(e) { 
    var ss = e.source.getActiveSheet(); 
    var trade = ss.getRange("D1").getValue(); 
    switch(trade){ 
    case "Asphalt": 
     ss.setTabColor("0000FF"); 
     break; 
    case "Cabinetry": 
     ss.setTabColor("FF0000"); 
     break; 
    default: 
     ss.setTabColor("008000"); 
    } 
}