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.
/** @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
- Otwórz arkusz i wybierz „Rozszerzenia” → „Apps Script”
- Edytor otwiera się w nowej karcie: po lewej „Kod.gs”, po prawej
function myFunction() { } - Napisz kod w
{ }i zapisz (Ctrl+S, na Macu ⌘+S) - Kliknij u góry „▷ Uruchom”. Wynik pojawi się na dole w „Dzienniku wykonywania”
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.
- „Wymagana autoryzacja” → Sprawdź uprawnienia / OK
- Wybierz konto
- „Google nie zweryfikował tej aplikacji” → „Zaawansowane” w lewym dolnym rogu
- „Otwórz (nazwa projektu) (niebezpieczne)”
- 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.
| Kod | Znaczenie |
|---|---|
| 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) |
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');
}
}
}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.
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
| GAS | VBA w Excelu | |
|---|---|---|
| Kod | JavaScript | VBA(Visual Basic) |
| Gdzie działa | Serwery Google | Excel na twoim komputerze |
| Co jest potrzebne | Przeglądarka i konto Google | Wersja Excela na komputer (głównie Windows) |
| Łączy się z | Gmail, Kalendarz, Dysk, Formularze | Word, Outlook, pliki na komputerze |
| Uruchamianie o stałej porze | Przez 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.
- 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.
- 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.
- 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.
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.