2017-11-25 3 views
0

Ich habe 13 Blätter in Google Tabellen, 12 Blätter mit Namen in der Zeile und Daten in der Spaltenüberschrift.Farbbereich der Zellen basierend auf Werten in verschiedenen Blatt

Ich möchte die ganze Spalte grau formatiert werden basierend auf Feiertagen aufgeführt in einem "HolidayList" Blatt. Ich habe einigen Code geschrieben, die in der richtigen Zelle nicht-Adresse arbeiten:

function formatForHoliday() { 
    Logger.clear(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var holidays = ss.getRange("HolidayList!A2:A80").getValues(); 
    // Logger.log(holidays); 

    // For each sheet 
    for (var s = 0; s <= 12; s++) { 
    var sheet = ss.getSheets()[s]; 
    // Logger.log(sheet); 
    var values = sheet.getRange(sheet.getName() + "!F3:NF3").getValues(); 
    // var newValues = []; 
    // Logger.log(values); 

    // In each sheet, for each value 
    for (i in values[0]) { 
     for (j in holidays) { 
     var val = values[0][i]; 
     var hol = holidays[j][0]; 
     Logger.log(val.valueOf()); 
     Logger.log(hol.valueOf()); 

     if (val.valueOf() == hol.valueOf()) { 
      // newValues.push(values[0][i]); 
      var cellsRange = sheet.getRange(4, i + 6, 52, 1); 
      var address = cellsRange.getA1Notation(); 
      cellsRange.setBackground('grey'); 
     } 
     } 
    } 
    } 
} 

Antwort

0

Ihr Code scheint in Ordnung zu sein, ist die einzige Frage, die ich jetzt sehen kann, ist, dass Sie Bereich von Set sind das Abrufen [mehr] von Zellen, aber Hintergrund nur zu einem setzen.

Und Sie anwenden SetBackground() auf eine Zeichenfolge. getA1Notation() gibt String nicht Bereich zurück. https://developers.google.com/apps-script/reference/spreadsheet/range#geta1notation

setBackground() kann nur auf den Bereich angewendet werden.

https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundcolor

var cellsRange = sheet.getRange(4, i + 6, 52, 1); 
var address = cellsRange.getA1Notation(); 
cellsRange.setBackground('grey'); 

Vielmehr sollten Sie auf alle diese Zellen gesetzt, deren Bereich/Adresse, die Sie geholt haben. https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundscolor

Ich denke, was Sie tun sollten, ist, dass:

  1. Sie tun Schritt ein d fetching richtig liegen.

var cellsRange = sheet.getRange(4, i + 6, 52, 1);

  1. Nun sollten Sie eine Reihe von gleicher Dimension wie die machen (4, i + 6, 52, 1) dh I [48x1 denken

    ]
  2. Fill all sein Element mit 'grauer'

  3. Verwenden setBackgrounds() Methode. https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundscolor

Lassen Sie mich wissen, ob dies Ihr Problem behebt. Oder wenn Sie weitere Zweifel/Vorschläge haben.

Dank

Verwandte Themen