Arkusze w pracy

Czym jest GAS (Google Apps Script)?
Automatyzacja Arkuszy Google – wprowadzenie

Co tydzień doprowadzać tabelę do tej samej postaci. Usuwać puste wiersze z wklejonych danych. Oznaczać wiersze spełniające warunek. W arkuszach jest mnóstwo zadań o stałych krokach.

Takie zadania wykonuje automatycznie GAS (Google Apps Script). Ten artykuł pokazuje, co potrafi GAS, od czego zacząć i jak przejść przez ekrany „autoryzacji”, na których wiele osób utyka za pierwszym razem.

Czym jest GAS?

GAS to sposób Google na uruchamianie programów. Używa tej samej składni co JavaScript i obsługuje Arkusze Google, a także Gmaila, Kalendarz Google, Dysk Google i Formularze Google.

Wystarczy konto Google. Jest za darmo i nic nie trzeba instalować: otwórz arkusz w przeglądarce i zacznij pisać. Program działa na serwerach Google, a nie na twoim komputerze.

Nagrane makra a GAS

Arkusze Google mają „makra”, które nagrywają twoje czynności, aby powtarzać je dowolnie wiele razy. Zacznij nagrywanie przez „Rozszerzenia” → „Makra” → „Nagraj makro”, zaznaczaj i wpisuj w komórkach, a twoje czynności zostaną zapisane jako kod GAS.

Nagranie: wpisanie „test” w B2 i pogrubienie
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B2').activate();
  spreadsheet.getCurrentCell().setValue('test');
  spreadsheet.getActiveRangeList().setFontWeight('bold');
};

Czyli makro to w środku GAS. Nawet jeśli nadasz mu nazwę w rodzaju „Test pogrubienia”, funkcja w kodzie nazywa się myFunction. Nazwa w menu i nazwa funkcji są przechowywane osobno.

Podczas nagrywania wybierasz na pasku na dole „Użyj odwołań bezwzględnych” lub „Użyj odwołań względnych”. Odwołania bezwzględne zapisują się jako adresy (B2), więc makro pisze zawsze w tym samym miejscu, niezależnie od zaznaczonej komórki. Względne zapisują się jako „jeden wiersz pod bieżącą komórką” i działają od zaznaczonej komórki.

Samo nagrywanie nie poradzi sobie z tabelami o zmiennej długości ani z krokami zależnymi od warunków. Dalej czyta się nagrany kod i go uzupełnia.

Co można zrobić w GAS

  • Usuwać puste wiersze z wklejonych danych i formatować nagłówki
  • Sprawdzać kwoty lub daty i wpisywać w kolumnie np. „Duże” lub „Po terminie”
  • Dodać do arkusza własne menu i uruchamiać zadania jak przyciskiem
  • Tworzyć własne funkcje do użycia w komórkach (funkcje niestandardowe)
  • Wysyłać e-maile przez Gmaila na podstawie tabeli
  • Uruchamiać zadanie o stałej porze, np. codziennie o 8 rano (reguły czasowe)
  • Przepisywać odpowiedzi z Formularzy Google do innego arkusza, gdy tylko przyjdą

Ręcznie każde z tych zadań zajmuje od kilku do kilkudziesięciu minut. Napisane raz, potem uruchamia się jednym kliknięciem w menu – albo samo.

Jak zacząć z GAS

  1. Otwórz arkusz i wybierz „Rozszerzenia” → „Apps Script”
  2. Edytor otwiera się w nowej karcie: po lewej „Kod.gs”, po prawej function myFunction() { }
  3. Napisz kod w { } i zapisz (Ctrl+S, na Macu ⌘+S)
  4. Kliknij u góry „▷ Uruchom”. Wynik pojawi się na dole w „Dzienniku wykonywania”
Pierwszy skrypt: odczytaj A1, zapisz do dziennika i wpisz w B1
function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const value = sheet.getRange('A1').getValue();
  Logger.log(value);
  sheet.getRange('B1').setValue('Sprawdzone');
}

Logger.log zapisuje wartość w dzienniku wykonywania. Liczby pokazują się z kropką dziesiętną, np. 120.0 (console.log pokazuje 120). Gdy coś nie działa zgodnie z oczekiwaniami, najpierw sprawdź wartości w dzienniku.

Ekrany autoryzacji przy pierwszym uruchomieniu

Gdy po raz pierwszy uruchamiasz swój kod, pojawia się ekran z pytaniem, czy skrypt może czytać i edytować arkusz. Wiele osób tu utyka, więc przejdźmy przez to krok po kroku.

  1. „Wymagana autoryzacja” → Sprawdź uprawnienia / OK
  2. Wybierz konto
  3. „Google nie zweryfikował tej aplikacji” → „Zaawansowane” w lewym dolnym rogu
  4. „Otwórz (nazwa projektu) (niebezpieczne)”
  5. Sprawdź, na co się zgadzasz, i kliknij „Zezwól” (jeśli trzeba coś zaznaczyć, zaznacz i kliknij „Dalej”)

„Google nie zweryfikował tej aplikacji” to ostrzeżenie dla skryptów, których Google nie sprawdził. Twoje skrypty i nagrane przez ciebie makra nie są sprawdzane, więc ten ekran pojawia się zawsze. Jeśli zrobiłeś to sam, możesz spokojnie kontynuować.

Jeśli natomiast ekran pojawi się w arkuszu od nieznanej osoby, wybierz „Powrót do bezpiecznej strony”. Po zezwoleniu skrypt może działać na twoich arkuszach i poczcie w ramach twojego konta.

Jeśli na początku kodu wpiszesz /** @OnlyCurrentDoc */, skrypt może dotykać tylko „tego arkusza”, a wymagane uprawnienia są węższe. Nagrane makra mają to od początku.

Te same kroki przejdziesz w misji 1 ćwiczeń.

Najczęściej używany kod

Oto, czego najczęściej używa się przy pracy z arkuszem. Numery wierszy i kolumn zaczynają się od 1, a indeksy tablicy odczytanej przez getValues od 0.

KodZnaczenie
const sheet = SpreadsheetApp.getActiveSheet();Aktualnie otwarty arkusz
sheet.getRange('A1').getValue()Odczytaj wartość A1
sheet.getRange('A1').setValue('Ukończono')Wpisz w A1
sheet.getRange(2, 3)Wiersz 2, kolumna 3 (C2). Kolumny można podać liczbą
sheet.getRange('A2:C10').getValues()Odczytaj zakres naraz (tablica dwuwymiarowa)
sheet.getRange(2, 1, 9, 3).setValues(values)Wpisz naraz (wiersze i kolumny zgodne z tablicą)
sheet.getLastRow()Numer ostatniego wiersza z wartością
sheet.appendRow(['10/31', 'Sato', 5000])Dodaj wiersz pod ostatnim
sheet.deleteRow(5)Usuń wiersz 5 (wiersze poniżej przesuwają się w górę)
sheet.getRange('A1:D1').setFontWeight('bold')Pogrub
sheet.getRange('A1:D1').setBackground('#fff2cc')Ustaw kolor tła
Logger.log(value)Zapisz w dzienniku wykonywania (do sprawdzania wartości)
Przejdź przez wszystkie wiersze i rozróżnij według warunku
function judgeTargets() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for (let row = 2; row <= sheet.getLastRow(); row++) {
    const sales = sheet.getRange(row, 2).getValue();
    const target = sheet.getRange(row, 3).getValue();
    if (sales >= target) {
      sheet.getRange(row, 4).setValue('Osiągnięto');
    } else {
      sheet.getRange(row, 4).setValue('Nie osiągnięto');
    }
  }
}
Dodaj własne menu przy otwarciu (onOpen)
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Zamknięcie miesiąca')
    .addItem('Oznacz duże sprzedaże', 'markLarge')
    .addToUi();
}

Funkcja o nazwie onOpen uruchamia się automatycznie przy otwarciu arkusza. Uruchomiona przez „▷ Uruchom” w edytorze daje błąd Cannot call SpreadsheetApp.getUi() from this context., więc zapisz i otwórz arkusz ponownie, aby sprawdzić.

Wysyłanie e-maili i uruchamianie o stałych porach

Najczęściej szuka się w GAS wysyłania e-maili i reguł czasowych.

Wyślij e-maile na adresy z tabeli
function sendReminders() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
  rows.forEach(([name, email]) => {
    MailApp.sendEmail(email, 'Przypomnienie o terminie', name + ',\n\ntermin mija w ten piątek.');
  });
}

Jest limit wysyłki: darmowe konto Google może wysłać do 100 e-maili dziennie (konta Google Workspace więcej). Jedno uruchomienie trwa maksymalnie 6 minut; potem zatrzymuje się z komunikatem „Exceeded maximum execution time”.

Aby uruchamiać o stałej porze, kliknij po lewej stronie edytora „Reguły” (ikona zegara) → „Dodaj regułę” i wybierz funkcję oraz „Według czasu”. Możesz ustawić przedział godzin codziennie, co tydzień lub co miesiąc.

E-maile wysyłają się naprawdę, nawet gdy tylko testujesz. Najpierw sprawdź na tabeli, w której jest tylko twój adres.

Różnice względem VBA w Excelu

GASVBA w Excelu
KodJavaScriptVBA(Visual Basic)
Gdzie działaSerwery GoogleExcel na twoim komputerze
Co jest potrzebnePrzeglądarka i konto GoogleWersja Excela na komputer (głównie Windows)
Łączy się zGmail, Kalendarz, Dysk, FormularzeWord, Outlook, pliki na komputerze
Uruchamianie o stałej porzePrzez reguły (działa nawet przy wyłączonym komputerze)W połączeniu z Harmonogramem zadań Windows lub podobnym

Idee są w obu te same: czytanie komórek, zapisywanie, powtarzanie i rozróżnianie według warunków. Znając jedno, przeczytasz drugie. Makra Excela opisujemy we wprowadzeniu do makr w Excelu.

Ćwicz w przeglądarce

W symulacji makr i GAS na tej stronie ćwiczysz, uruchamiając prawdziwy kod w wirtualnym arkuszu i edytorze Apps Script. Uzupełniasz luki w kodzie, a na telefonie wybierasz każdą lukę z czterech opcji.

  1. Rozdział 1 Nagrywanie i uruchamianie makr

    Uruchom nagrane makro i nagraj własne. Odwołania bezwzględne i względne, czytanie i poprawianie nagranego kodu.

  2. Rozdział 2 Czytaj, powtarzaj, rozróżniaj

    Czytaj komórki przez getValue, zapisuj przez setValue i sprawdzaj wartości w dzienniku wykonywania. Przechodź przez wszystkie wiersze pętlą for i rozróżniaj przez if.

  3. Rozdział 3 Studium przypadku: porządkowanie miesięcznej tabeli sprzedaży

    Usuń puste wiersze, oznacz naraz duże sprzedaże i uruchom to z własnego menu. Na koniec własna funkcja dla komórek.

Zacznij symulację (13 misji) →

Jak uczyć się GAS

Dobry początek to „Nagraj makro” w jednym z twoich arkuszy i przeczytanie powstałego kodu. Łatwiej wtedy zobaczyć, co robi każde polecenie.

Kod napisze ci też generatywna AI. Ale żeby ocenić, czy jest poprawny i gdzie go poprawić, musisz umieć przeczytać przynajmniej „najczęściej używany kod” z tego artykułu.

* Nazwy ekranów i limity według stanu na październik 2026; mogą się zmienić wraz z aktualizacjami Google.

* Arkusze Google to znak towarowy Google LLC. Ta witryna nie jest powiązana z Google.