9

Próbuję dowiedzieć się, jak używać formatowania warunkowego w arkuszu kalkulacyjnym google, podobnym do tego, co można zrobić w programie Excel za pomocą formuły.Skrypt warunkowego formatowania arkusza kalkulacyjnego Google

Chcę, aby komórka A2 zmieniła kolor na zielony, jeśli komórka O2 ma wartość "X" i zostanie to wykonane na obu kolumnach do końca. Wiem, że to będzie wymagało skryptu.

Przebiegłem przez łącze, które jest podobne, ale nie wiem, jak dostosować go do moich potrzeb. Czy to jest coś, co można zrobić?

Link: https://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting

Odpowiedz

15

Oto skrypt można użyć, aby robić to, co opisano:

function formatting() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); 
    var columnO = sheet.getRange(2, 15, sheet.getLastRow()-1, 1); 
    var oValues = columnO.getValues(); 

    for (var i = 0; i < oValues.length; i++) { 
    if (oValues[i][0] == 'X') { 
     sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green'); 
    } 
    } 
} 
+0

To działa idealnie. Dodałem kolejną linię, więc jeśli komórka jest pusta, zmienia się z powrotem na biały. –

+0

W JAKI SPOSÓB KORZYSTAJ z tego skryptu po jego napisaniu? –

+0

@DanielWilliams Po zapisaniu skryptu w edytorze skryptów można go uruchomić na kilka sposobów. Najprostszym jest naciśnięcie przycisku Uruchom w edytorze skryptów (wygląda jak trójkąt/przycisk odtwarzania). https://developers.google.com/apps-script/execution_script_editor –

8

W nowych arkuszy Google, to nie wymaga skryptu.

Zamiast tego, w formatowaniu warunkowym, wybierz opcję "formułę niestandardową" i wpisz wartość, taką jak =O2="X" - lub dowolne wyrażenie, które zwraca wartość logiczną prawda/fałsz.

Z tego co mogę powiedzieć, odniesienia wymienione w tych niestandardowych skryptów są nieco dziwne, i są stosowane w następujący sposób ...

Jeśli jest to komórka w obrębie wybranego zakresu, to zmienia się do” komórka, która jest podświetlona ".

Jeśli jest to komórka poza wybranym zakresem, to jest ona zmieniana na "tę pozycję plus przesunięcie to samo, co przesunięcie od bieżącej komórki do lewego górnego rogu wybranego zakresu".

Oznacza to, że jeśli zakres był A1:B2, to powyższe byłby taki sam, jak ustawienie indywidualne formatowanie na każdej komórki, co następuje:

A1 =O2="X" 
A2 =O3="X" 
B1 =P2="X" 
B2 =P3="X" 

Można także określić stałe referencje, jak =$O$2="X" - który sprawdzi konkretna komórka O2 dla wszystkich komórek w wybranym zakresie.

4

(lut 2017) Jak wspomniano w innej odpowiedzi, Arkusze Google pozwala teraz użytkownikom na dodawanie Conditional Formatting bezpośrednio z interfejsu użytkownika, czy to na pulpicie/notebooka, urządzeń z systemem Android lub iOS.

Podobnie, z the Google Sheets API v4 (i nowszym), programiści mogą teraz pisać aplikacje korzystające z reguł formatowania warunkowego CRUD. Sprawdź strony guide i samples, aby uzyskać więcej informacji, a także reference docs (wyszukaj dla {add,update,delete}ConditionalFormatRule). Przewodnik dysponuje ten urywek Python (zakładając identyfikator pliku SHEET_ID i SHEETS jako punktu końcowego usługi API):

myRange = { 
    'sheetId': 0, 
    'startRowIndex': 1, 
    'endRowIndex': 11, 
    'startColumnIndex': 0, 
    'endColumnIndex': 4, 
} 

reqs = [ 
    {'addConditionalFormatRule': { 
     'index': 0, 
     'rule': { 
      'ranges': [ myRange ], 
      'booleanRule': { 
       'format': {'textFormat': {'foregroundColor': {'red': 0.8}}} 
       'condition': { 
        'type': 'CUSTOM_FORMULA', 
        'values': 
         [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}] 
       }, 
      }, 
     }, 
    }}, 
    {'addConditionalFormatRule': { 
     'index': 0, 
     'rule': { 
      'ranges': [ myRange ], 
      'booleanRule': { 
       'format': { 
        'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4} 
       }, 
       'condition': { 
        'type': 'CUSTOM_FORMULA', 
        'values': 
         [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}] 
       }, 
      }, 
     }, 
    }}, 
] 

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID, 
     body={'requests': reqs}).execute() 

Oprócz Python API Google obsługują variety of languages, więc masz opcje. W każdym razie, ten próbka kodu formatuje Arkusz (patrz obrazek poniżej), tak że osoby młodsze niż średni wiek są podświetlone na jasnoczerwony, podczas gdy te nad medianą mają kolorowe dane w czerwonej czcionce.

Conditional formatting example


PUBLIC SERVICE OGŁOSZENIE

Najnowszy Arkusze API udostępnia funkcje niedostępne w starszych wersjach, a mianowicie daje programistom dostęp programistyczny do arkusza jakbyś przy użyciu interfejsu użytkownika (formatowanie warunkowe [!], zamrożone wiersze, formatowanie komórek, zmiana rozmiaru wierszy/kolumn, dodawanie tabel przestawnych, tworzenie wykresów itd.).

Jeśli jesteś nowym API & chcą zobaczyć nieco dłuższy, bardziej ogólne „świata rzeczywistego” przykłady wykorzystania API, stworzyłem różne filmy & podobne posty na blogach:

Jak można powiedzieć, arkusze API jest głównie dla dokumentu zorientowane funkcjonalności, jak opisano powyżej, ale do wykonywania plików -level dostępu, takie jak są przesyłane & pobrania, eksport import & (takie same jak są przesyłane & pobrań ale konwersja do/z różnych formatów), zamiast tego użyj Google Drive API. Przykłady użycia API Dysk:

  • Eksportowanie arkusza Google jako CSV (Blog post tylko)
  • "biedaka zwykły tekst do PDF" konwerter (blog post tylko) (*)

(*) - TL; DR: prześlij zwykły plik tekstowy na Dysk, zaimportuj/przekonwertuj na format Dokumentów Google, a następnie wyeksportuj dokument jako plik PDF. Opublikuj powyżej, używając Drive API v2; ten follow-up post opisuje migrację do Drive API v3, a tutaj jest video, łączący oba posty "biednego człowieka".

Powiązane problemy