2016-11-02 4 views
0

Lange Rede, kurzer Sinn: Ich benötige Hilfe beim Ändern des Skripts zum Überschreiben oder Entfernen bedingter Formatierungsfarben, die in Google Tabellen angewendet werden, abhängig davon, ob eine Zelle eine Notiz enthält es.So überschreiben oder entfernen Sie bedingte Formatierungen in Google Tabellen mithilfe von Google Apps Script

Vollständige Erklärung: Ich habe this scheduling template, die wir mit einer Content-Produktion Arbeit zu verfolgen. Der Editor mag bedingte Formatierung, um zu zeigen, wo die frühesten Daten auf dem Blatt sind. Wir möchten Zellen auch vollständig kennzeichnen, indem wir ihnen eine Notiz hinzufügen (damit wir das geplante Fertigstellungsdatum in der Zelle und das tatsächliche Fertigstellungsdatum in der Notiz sehen können), die dann diese Zelle ausgrauen würde. Vergrauung aus Zellen mit Notizen arbeitet mit diesem Skript aus den Foren zusammengebastelt:

function onOpen() { var sheet = SpreadsheetApp.getActiveSheet(), 
    data = sheet.getDataRange(), 
    notes = data.getNotes(), 
    bkgs = data.getBackgrounds(); for (var i = 0, len = notes.length; i < len; i++) { 
for (var j = 0, jlen = notes[0].length; j < jlen; j++) 
{ 
    if (notes[i][j]) 
    bkgs[i][j] = 'gray'; 
} } data.setBackgrounds(bkgs); } 

Allerdings wird es nicht Zellen grau, wo die bedingte Formatierung existiert, so suchte ich mehr Code, diese Frage zu lösen. Ich habe versucht, sheet.clearFormats() hinzuzufügen; innerhalb der if-Anweisung wie folgt aus:

{ 
    if (notes[i][j]) 
    bkgs[i][j] = 'gray'; 
    sheet.clearFormats(); 
} } data.setBackgrounds(bkgs); 

... die zunächst schien zu funktionieren, aber dann das Blatt vollständig gelähmt. Es stoppte dann die nächsten paar Male, die ich versuchte, es zu öffnen und zu schließen. Haben Sie Ideen, wie Sie die bedingte Formatierung in dieser Einstellung überschreiben oder entfernen können, ohne die Registerkarte zu beschädigen?

Antwort

0

setBackground ist ein Bereichsobjekt. Es funktioniert nicht mit einem Array, das funktioniert:

function changeConditionalFormat() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet() 
    var s = ss.getActiveSheet() 
    var range= s.getRange(2,8,5,1) 
    range.clearFormat() 
    range.setBackground('grey'); 
} 
+0

Ah, guter Punkt! Gibt es eine Möglichkeit, dies nur für Zellen zu aktivieren, denen eine Notiz hinzugefügt wurde? Ich bastle daran, bekomme aber immer wieder Fehler in meinem Code. (Tut mir leid, ich bin ein Anfänger.) – Marie

Verwandte Themen