Automatyzacja zadań w Excelu 365 - skrypty TypeScript
Spis treści:
- Czym właściwie są skrypty w Excelu 365
- Pierwszy skrypt – nagrywanie krok po kroku
- Jak napisać pierwszy skrypt
- Jak bezpiecznie zapisać i używać skryptu
- Minimalne podstawy składni, które naprawdę musisz znać
- Praca na komórkach i zakresach
- Tworzenie raportów i formatowanie tabeli
- Warunki i pętle - tutaj zaczyna się automatyzacja
- Power Automate - kiedy sam skrypt to za mało
- Jak rozwijać własne skrypty krok po kroku
Jeśli korzystasz z Excela 365, to pewnie masz za sobą wiele godzin klikania w te same miejsca, kopiowania danych, poprawiania formatów, filtrowania tabel i przygotowywania podobnych raportów. Właśnie tu wchodzą skrypty TypeScript w Excelu, nazywane w środowisku Microsoft jako Office Scripts. To mechanizm, który pozwala zamienić ręczną sekwencję działań w kod uruchamiany automatycznie. Skrypty tworzysz bezpośrednio w Excelu w karcie Automatyzacja, więc nie musisz instalować żadnych dodatków.
Kolejna dobra wiadomość jest taka, że nie musisz być programistą. Na start nie potrzebujesz znać TypeScriptu, tylko zrozumieć kilka prostych idei: czym jest zmienna, jak wskazać komórkę, jak odczytać wartość i jak kazać Excelowi wykonać serię kroków. Reszta to praktyka. W tym artykule przejdziesz od absolutnych podstaw do bardziej zaawansowanych automatyzacji, tak żebyś po lekturze potrafił nie tylko wkleić gotowy kod, ale też świadomie go zmienić.
Czym właściwie są skrypty w Excelu 365
Office Scripts to skrypty oparte na TypeScript, które automatyzują pracę w Excelu. Możesz nimi wpisywać dane, czyścić zakresy, formatować komórki, tworzyć i sortować tabele, a także uruchamiać gotowe procesy cyklicznie lub z poziomu Power Automate. Microsoft udostępnia do tego edytor kodu, rejestrator akcji i dokumentację API obiektów takich jak Workbook, Worksheet, Range i Table.
Najważniejsze na początku jest to, żebyś nie myślał o kodzie jak o czymś abstrakcyjnym. Skrypt to po prostu lista poleceń. Jeśli ręcznie robisz coś w tej kolejności: otwórz arkusz, wpisz nagłówki, pogrub pierwszy wiersz, ustaw format walutowy, posortuj dane malejąco – to dokładnie taki sam proces możesz zapisać jako kod.
Pierwszy skrypt – nagrywanie krok po kroku
Nie musisz od razu pisać kodu. Możesz zacząć od nagrywania swoich czynności.
- Otwórz plik Excela w przeglądarce i przejdź do karty Automatyzacja.
- Kliknij Nowy skrypt i z listy rozwijalnej wybierz opcję Utwórz na podstawie nagrania. Teraz wykonuj w arkuszu dowolne kroki edytujące tabelę np.:
- Krok A: Zaznacz kolumny A:D w arkuszu.
- Krok B: Skopiuj je (Ctrl+C).
- Krok C: Przejdź do nowego arkusza.
- Krok D: Wklej dane (Ctrl+V) w komórkę A1.
- Krok E: Zaznacz wiersz 1 i ustaw pogrubienie.
- Krok F: Zaznacz kolumnę z kwotami i ustaw format „Waluta”.
- Krok G: Zmień nazwę nowego arkusza na „Dane_kopia”.
Zauważ, że wszystkie wykonywane kroki są zapisywane w oknie po prawej stronie ekranu.
- Kliknij Zatrzymaj w oknie Zarejestruj akcje. W edytorze pojawi się gotowy kod w języku TypeScript.
- Kliknij Uruchom, aby przetestować, czy skrypt powtarza Twoje kroki.
Jak napisać pierwszy skrypt
W Excelu 365 przejdź do karty Automatyzacja. Tak jak przy nagrywaniu kliknij Nowy skrypt, jednak tym razem z listy rozwijalnej wybierz opcję Utwórz w Edytorze kodu. Edytor wstawi Ci gotowy szkielet, zwykle zaczynający się od:
function main(workbook: ExcelScript.Workbook) {
kod
}
To oznacza: „uruchom funkcję główną i daj jej dostęp do aktualnego skoroszytu”.
Twój pierwszy działający przykład może wyglądać tak:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("Witaj");
}
Co tu się dzieje?
- getActiveWorksheet() pobiera aktywny arkusz.
- getRange(„A1”) wskazuje komórkę A1.
- setValue(…) wpisuje do niej tekst.
To wszystko. Pierwszy skrypt nie musi robić niczego wielkiego. Ma Ci pokazać jedną rzecz: Excel czeka na Twoje polecenia.
Jak bezpiecznie zapisać i używać skryptu
- W panelu edytora nadaj skryptowi własną nazwę, np. „Edycja raportu”. W tym celu wybierz opcję Zmień nazwę pod wybranym skryptem.
- Jeśli korzystasz z wersji przeglądarkowej lub działasz w chmurze skrypt zostanie automatycznie zapisany i przypisany do tego konkretnego pliku Excel. Jeśli udostępnisz ten plik w zespole, inni też będą mogli uruchomić ten skrypt (jeśli mają uprawnienia).
- Aby go uruchomić w przyszłości, wystarczy wejść w kartę Automatyzacja, kliknąć Wyświetl skrypty, wybrać go z listy lub odnaleźć go w Galerii skryptów pakietu Office i nacisnąć Uruchom.
Minimalne podstawy składni, które naprawdę musisz znać
Na początek wystarczą Ci cztery pojęcia.
- Zmienna – to nazwana „przechowalnia” na obiekt albo wartość.
W przykładzie let sheet = workbook.getActiveWorksheet(); zmienna sheet przechowuje arkusz. Zmienne deklarujemy poprzez słowo kluczowe let nazwa = typ_zmiennej_lub_wartosc. - Obiekt – coś, na czym możesz wykonywać działania. Arkusz to obiekt. Zakres to obiekt. Tabela to obiekt.
- Metoda – akcja wykonywana na obiekcie. getRange(), setValue(), getUsedRange() to metody.
- Wartość – konkretna zawartość komórki, liczba, tekst albo wynik odczytu.
Przykład odczytu i zapisu:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet(); //Przypisanie do zmiennej aktualnego arkusza
let kwota = sheet.getRange("B2").getValue(); //Przypisanie wartości z B2 do zmiennej kwota
sheet.getRange("C2").setValue(kwota); //Wpisanie wartości „kwota” do C2
}
Tutaj getValue() pobiera wartość z B2, a potem ta sama wartość trafia do C2. W praktyce tak właśnie zaczyna się większość automatyzacji: coś odczytujesz, coś przeliczasz, gdzieś zapisujesz.
➜ Obiekty Workbook, Worksheet i Range są podstawą całego modelu Office Scripts.
➜ Range oznacza jeden spójny obszar komórek, na przykład pojedynczą komórkę, cały wiersz, kolumnę albo blok danych.
Praca na komórkach i zakresach
W realnej pracy rzadko interesuje Cię pojedyncza komórka. Częściej pracujesz na zakresie, na przykład A1:D20. Taki zakres możesz czyścić, formatować, kopiować albo odczytywać z niego dane.
Przykład formatowania nagłówka:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet(); // Przypisanie do zmiennej aktualnego arkusza
let naglowek = sheet.getRange("A1:D1"); //Przypisanie zakresu do zmiennej naglowek
naglowek.setValues([["Produkt","Ilość","Cena","Wartość"]]); //Uzupełnienie nagłówków
naglowek.getFormat().getFont().setBold(true); //Pogrubienie nagłówków
}
Tutaj pojawia się nowa rzecz: setValues(). Używasz jej wtedy, gdy wpisujesz więcej niż jedną komórkę naraz. Z kolei getFormat() daje dostęp do formatowania zakresu. Po kropce możesz zejść do poziomu niżej, na przykład do czcionki przez getFont().
Możesz też pobrać używany obszar arkusza:
let dane = sheet.getUsedRange(); //Przypisanie całego zakresu do zmiennej dane
To bardzo wygodne, gdy nie znasz z góry ostatniego wiersza. Trzeba jednak uważać: jeśli arkusz był kiedyś formatowany „za daleko”, używany zakres może być większy, niż się spodziewasz.
Tworzenie raportów i formatowanie tabeli
Jednym z najlepszych zastosowań skryptów w Excelu 365 jest przygotowywanie prostych raportów. W praktyce bardzo często wygląda to tak: dostajesz dane, trzeba je uporządkować, nadać im czytelny wygląd, zamienić zakres na tabelę, ustawić format liczb i na końcu posortować wynik. Ręcznie zajmuje to kilka albo kilkanaście minut. Skrypt robi to za Ciebie w kilka sekund.
W takich zadaniach bardzo dobrze sprawdzają się tabele Excela. Tabela ma nagłówki, łatwiej się na niej pracuje i wygodniej się ją formatuje niż zwykły zakres. Dzięki temu możesz zbudować prosty raport, który za każdym razem będzie wyglądał tak samo i będzie gotowy do dalszej analizy albo wysyłki.
Załóżmy, że masz arkusz o nazwie Dane. Chcesz:
- pobrać dane,
- zamienić je na tabelę,
- dopasować szerokości kolumn i wysokości wierszy,
- ustawić format liczbowy,
- posortować dane po najważniejszej kolumnie,
- przygotować gotowy raport.
Poniżej masz prosty przykład:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getWorksheet("Dane"); // Pobranie arkusza Dane
let range = sheet.getUsedRange(); // Pobranie całego używanego zakresu
let table = sheet.addTable(range, true); // Zamiana zakresu na tabelę
table.setName("RaportSprzedazy"); // Nadanie nazwy tabeli
table.getHeaderRowRange().getFormat().getFont().setBold(true); // Pogrubienie nagłówków
table.getColumnByName("Wartość").getRangeBetweenHeaderAndTotal(). _
setNumberFormatLocal("# ##0,00"); // Format liczbowy dla kolumny Wartość
table.getSort().apply([{ key: 3, ascending: false }]); // Sortowanie malejąco po 4 kolumnie
let usedRange = sheet.getUsedRange(); // Ponowne pobranie zakresu
usedRange.getFormat().autofitColumns(); // Dopasowanie szerokości kolumn
usedRange.getFormat().autofitRows(); // Dopasowanie wysokości wierszy
}
Ten kod pokazuje kilka bardzo ważnych podstaw jednocześnie.
Najpierw pobierasz arkusz i cały używany zakres. To jest punkt startowy, bo właśnie na tych danych chcesz pracować. Potem używasz addTable(range, true), żeby zamienić zwykły zakres na tabelę. Drugi argument true oznacza, że pierwszy wiersz zawiera nagłówki.
Następnie nadajesz tabeli nazwę. To dobra praktyka, bo później możesz łatwo się do niej odwołać. Zamiast szukać zakresu od nowa, możesz pracować bezpośrednio na konkretnej tabeli.
Potem przechodzisz do formatowania. Instrukcja getHeaderRowRange() pobiera wiersz nagłówków, a setBold(true) ustawia pogrubienie. Dzięki temu raport od razu wygląda czytelniej.
Kolejny krok to format liczbowy. W praktyce kolumny takie jak Wartość powinny mieć spójny wygląd. Właśnie do tego służy setNumberFormatLocal(„# ##0,00”). Taki zapis ustawia liczby w bardziej czytelnej formie, z separatorem tysięcy i dwoma miejscami po przecinku.
Potem następuje sortowanie. table.getSort().apply([{ key: 3, ascending: false }]) oznacza sortowanie rosnąco po czwartej kolumnie tabeli. Numeracja zaczyna się od zera, więc 0 to pierwsza kolumna, a 3 to czwarta.
Na końcu jeszcze raz pobierasz używany zakres i dopasowujesz szerokość kolumn oraz wysokość wierszy. To prosty krok, ale daje bardzo praktyczny efekt: raport wygląda schludnie i nie wymaga ręcznych poprawek.
W praktyce właśnie tak zaczyna się większość automatyzacji raportowych. Najpierw budujesz prosty, powtarzalny schemat, który porządkuje dane i tworzy czytelny wynik. Dopiero później dokładasz bardziej zaawansowane elementy, na przykład obliczenia, warunki, dodatkowe kolumny albo kopiowanie raportu do osobnego arkusza.
Warunki i pętle - tutaj zaczyna się automatyzacja
Prawdziwa moc przychodzi wtedy, gdy skrypt podejmuje decyzje. Do tego służą warunki w połączeniu z pętlą, najczęściej for. Pamiętaj, że wszystkie instrukcje blokowe muszą posiadać otwarte i zamknięte klamry {} (w tym główna instrukcja function main). Zaleca się również stosowanie wcięć dla wyraźnego oddzielenia początku i końca danego bloku.
Składnia warunku IF:
if (warunek) {
// kod wykonywany, gdy warunek jest true
} else if (innyWarunek) {
// kod wykonywany, gdy innyWarunek jest true
} else {
// kod wykonywany, gdy żaden powyższy warunek nie jest true
}
Składnia pętli FOR:
for (inicjalizacja; warunek; inkrementacja) {
// kod do wykonania w każdej iteracji
}
Załóżmy, że w kolumnie D masz wartość sprzedaży, a w kolumnie E chcesz dopisać komentarz „Wysoka sprzedaż”, jeśli wartość przekracza 10000.
Przykład:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet(); // Przypisanie do zmiennej aktualnego arkusza
let dane = sheet.getUsedRange().getValues(); // Pobranie całego używanego zakresu
for (let i = 1; i < dane.length; i++) {
let sprzedaz = Number(dane[i][3]);
if (sprzedaz > 10000) {
sheet.getCell(i,4).setValue("Wysoka sprzedaż");
}
}
}
Rozbijmy to na czynniki pierwsze.
- getUsedRange().getValues() pobiera wszystkie dane jako tablicę.
- for (let i = 1; i < dane.length; i++) to pętla, czyli mechanizm powtarzania. W tym przypadku zaczynamy od wiersza 2 ( let i=1 – indeksy liczą się od 0) zwiększając licznik co 1 ( i++ ), aż do momentu, kiedy dojdziemy do ostatniego wiersza ( i < dane.length ).
- dane[i][3] to wartość z komórki w kolumnie D w bieżącym wierszu (indeksy liczą się od zera).
- if (sprzedaz > 10000) to warunek, który sprawdza, czy wartość sprzedaży jest większa od 10000.
- getCell(i,4) wskazuje komórkę w kolumnie E.
Efekt: skrypt przechodzi po wszystkich wierszach i oznacza tylko te rekordy, które spełniają warunek.
Power Automate - kiedy sam skrypt to za mało
Skrypt działa świetnie, gdy chcesz coś zrobić w samym Excelu. Gdy proces wychodzi poza Excela, potrzebujesz Power Automate.
Power Automate to narzędzie do budowania przepływów między różnymi aplikacjami i usługami. Sam skrypt odpowiada za operacje w Excelu, natomiast Power Automate steruje całym procesem dookoła. To on decyduje, kiedy uruchomić skrypt, na jakim pliku, po jakim zdarzeniu i co zrobić z wynikiem.
Takie połączenie ma sens wtedy, gdy Twój proces nie kończy się na samym Excelu. Na przykład:
- skrypt ma się uruchomić gdy pojawia się plik w OneDrive lub SharePoint,
- raport ma uruchamiać się codziennie o określonej godzinie,
- po obróbce danych trzeba wysłać e-mail,
- trzeba powiadomić zespół w Teams.
Narzędzia te znajdują się na karcie Automatyzacja pod opcją Szablony automatyzacji w grupie Power Automate.
Jak to działa w praktyce
Przykład: do folderu w SharePoint trafia plik z danymi. Power Automate:
- wykrywa nowy plik,
- uruchamia na nim skrypt,
- skrypt przygotowuje raport,
- wynik zostaje zapisany,
- menedżer dostaje e-mail,
- zespół dostaje powiadomienie w Teams.
Krok po kroku
- Przygotuj plik i skrypt – zapisz skoroszyt w OneDrive lub SharePoint i utwórz skrypt w Excelu.
- Utwórz przepływ w Power Automate – może być automatyczny, zaplanowany albo ręczny.
- Dodaj wyzwalacz – np. godzina, nowy plik, wiadomość e-mail lub kliknięcie przycisku.
- Wskaż plik Excel – wybierz lokalizację, folder i skoroszyt.
- Dodaj akcję uruchomienia skryptu – wskaż plik i nazwę skryptu.
- Dodaj kolejne działania – np. wysyłkę e-maila, wiadomość w Teams, kopiowanie pliku, zapis do SharePoint, akceptację albo powiadomienie.
Jakie aplikacje możesz podłączyć
- Outlook – odbiór załączników, wysyłka maili po zakończeniu procesu.
- SharePoint – wykrywanie nowych plików, przechowywanie i archiwizacja raportów.
- OneDrive – praca na plikach, kopiowanie, organizacja folderów.
- Teams – powiadomienia o gotowym raporcie lub błędzie.
- Forms – zbieranie danych i uruchamianie procesu po odpowiedzi.
- Approvals – akceptacja raportów i dalsze kroki zależne od decyzji.
- Dataverse i inne źródła danych – pobieranie danych, przekazanie ich do Excela i dalsza automatyzacja.
Jak rozwijać własne skrypty krok po kroku
Najlepsza ścieżka jest prosta. Najpierw wybierz jedną ręczną czynność, która często się powtarza. Potem rozpisz ją po ludzku, bez kodu: „otwórz arkusz, pobierz dane, policz wartości, oznacz wyjątki, sformatuj wynik”. Dopiero później zamień te kroki na skrypt. Pamiętaj, że możesz nagrać swoje czynności i zamienić je na gotowy kod. Nie zaczynaj od „napiszę automatyzację całego działu”. Zacznij od jednego procesu, który oszczędzi Ci 10 minut dziennie. To właśnie z takich małych zwycięstw buduje się dobre rozwiązania.