Jak zacząć z Google Apps Script w Sheets?

Co znajdziesz w tym artykule

W tym artykule znajdziesz informację jak dodać Google Apps Script do swojego arkusza kalkulacyjnego. Do rozpoczęcia przygody z Google Apps Script potrzebne Ci będzie wyłącznie konto Google oraz dostęp do Arkuszy Google. Na wstępie omówię historię Apps Script oraz omówię krótko przykładowe zadania, do których możesz wykorzystać Apps Script.

Krótka historia

Google Apps Script jest platformą, która umożliwia pisanie programów w oparciu o język JavaScript. Przeznaczniem Apps Script jest tworzenie małych aplikacji w oparciu o infrastrukturę Google. W ramach korzystania z Apps Script możemy uzyskać dostęp do większości narzędzi, możemy np. w Google Sheets tworzyć dokumenty i umieszczać je w odpowiednich folderach na dysku Google. Głównym celem utworzenia Google Apps Script było umożliwienie użytkownikom automatyzacji różnych zadań. W marcu 2020 roku wprowadzono nowy silnik aplikacji, jest nim od tego czasu V8 JS runtime dzięki czemu użytkownicy uzyskali pełne wsparcie dla języka JavaScript.

Co mogę utworzyć z Google Apps Script?

Google Apps Script pozwala Ci na dodanie własnej funkcjonalności do narzędzi Google – takich jak Google Sheets, Google Docs, czy Google Forms itp. Dodatkową funkcjonalność musisz zaprogramować we własnym zakresie w oparciu o język JavaScript oraz funkcje które udostępniane są w ramach środowiska Google. Dzięki Apps Script możesz zautomatyzować wiele procesów w firmie, jeśli często zatrudniasz pracowników to możesz utworzyć np. generator umów.

Kolejny przykład – jeśli rozliczasz pracowników w systemie prowizyjnym, możesz stworzyć kalkulator wynagrodzeń, który będzie z początkiem miesiąca wysyłał zestawienie do każdego z pracowników z podsumowaniem jego zarobków.

Poniżej znajdziesz przykłady projektów, które stworzone zostały przez nas w oparciu o Google AppScript dla naszych klientów:

  • Seryjne generowanie zestawienia godzin dla umowy zlecenie.
  • Narzędzie do kontroli zdarzeń we flocie pojazdów (serwisy olejowe, przeglądy techniczne itp.) – narzędzie zintegrowane z GPS oraz email.
  • Kalkulator wynagrodzeń dla kierowców taksówek.
  • Seryjne generowanie kilometrówki dla Urzędu Skarbowego na podstawie raportów GPS.
  • Narzędzie do monitorowania czasu pracy pracowników zintegrowane z aplikacją opartą o Electron.
  • Analiza danych (lejek sprzedażowy) pochodzących z systemu Bitrix – dane pobierają się automatycznie.

Pierwszy skrypt

Aby utworzyć swój pierwszy skrypt w Google Apps Script musisz stworzyć nowy plik w Arkuszach Google. Po utworzeniu pliku wprowadź jego nazwę i przejdź do pozycji w menu o nazwie Rozszerzenia a następnie kliknąć w Apps Script.

W ramach naszego pierwszego skryptu dodamy sobie dane do naszego głównego arkusza, wyświetlimy alert oraz dodamy utworzoną przez nas funkcję do menu.

Po wejściu w edytor Apps Script nadaj nazwę dla swojego programu. W moim przypadku wprowadziłem po prostu Mój kod, ale może być to dowolna nazwa. Jeśli chodzi o układ, to po lewej stronie w menu od góry znajduje się: Omówienie, Edytor, Historia projektu, Reguły, Uruchomienia oraz Ustawienia projektu. Postaram przygotować się osobne wpis, w którym znajdziesz więcej informacji na temat tych poszczególnych elementów w menu.

Na ten moment skupmy się na kodzie, przejdź do edytora jeśli jesteś w innym miejscu i zobaczmy co tu mamy domyślnie:

function myFunction(){

}

// możesz również korzystać z funkcji strzałkowej
const myFunction = () => {

}

Domyślnie w pliku znajduje się jedna funkcja dodana przez system o nazwie myFunction, jest to nic innego jak po prostu funkcja w języku programowania JavaScript. Zazwyczaj pierwszym kodem pisanym w nowym środowisku jest jakiś prosty console.log – tak też zrobimy w tym przypadku.

function helloWord() {
 Logger.log("Hello from console")
}

Z racji tego, że jest to JavaScript dostępny w silniku stworzonym przez Google nie mamy dostępu do natywnej funkcji console.log(), zamiast tego do debbugowania elementów korzystamy z dedykowanej funkcji Logger.log(). Aby uruchomić funkcję musisz nacisnąć przycisk Uruchom w górnej części menu, upewnij się, że odpowiednia funkcja została wybrana.

Po naciśnięciu Uruchom w dolnej części powinno pojawić się okno z debbugerem i powinno pojawić Ci się taki wynik:

Jak możesz zauważyć w dzienniku wykonywania na wstępie i na końcu przekazywana jest informacja na temat godziny rozpoczęcia oraz zakończenia skryptu. Maksymalny czas pracy skryptu na dzień dzisiejszy wynosi 6 minut, jest pewna metoda na obejście tego limitu ale o tym w osobnym wpisie.

Jak wprowadzić dane używając skryptu?

Wprowadźmy sobie dane 10 pracowników za jednym razem do aktywnego arkusza, zaczynając w pierwszym wolnym wiersz. Dodaj następujący kod:

const employeeData = [
  { name: "Jan Kowalski", phone: "555-444-333", branch: "warsztat" },
  { name: "Anna Nowak", phone: "555-333-222", branch: "sprzedaż" },
  { name: "Piotr Zieliński", phone: "555-222-111", branch: "magazyn" },
  { name: "Maria Wiśniewska", phone: "555-111-000", branch: "warsztat" },
  { name: "Tomasz Wójcik", phone: "555-666-777", branch: "zarządzanie" },
  { name: "Ewa Kaczmarek", phone: "555-777-888", branch: "sprzedaż" },
  { name: "Krzysztof Lewandowski", phone: "555-888-999", branch: "magazyn" },
  { name: "Agnieszka Dąbrowska", phone: "555-999-000", branch: "warsztat" },
  { name: "Michał Woźniak", phone: "555-000-111", branch: "zarządzanie" },
  { name: "Zofia Mazur", phone: "555-123-456", branch: "sprzedaż" }
];


function addValuesToRows() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 employeeData.forEach((employee) => {
 sheet.appendRow([employee.name, employee.phone, employee.branch])
 })
}

Przed pierwszym uruchomieniem tego kodu zostaniesz poproszony o wykonanie autoryzacji skryptu – wyskakuje taki komunikat ponieważ dodaliśmy nową funkcjonalność która korzysta z zasobów dysku Google. Aby przejść dalej przejdź do Zaawansowane wyraź zgodę na wykonanie skryptu. Taką zgodę będziesz musiał wyrazić za każdym razem, kiedy utworzysz nowy arkusz oraz dodasz do niego Google Apps Script.

W powyższym kodzie dodajemy stałą o nazwię employeeData, oraz funkcję o nazwie addValuesToRows która doda rekordy do naszego aktywnego arkusza. Pewnie zastanawiasz się w tym momencie czym jest aktywny arkusz? Jest to po prostu ten arkusz który aktualnie jako użytkownik w pliku masz otwarty:

Dodajmy naszą funkcje do menu

Aby dodać naszą funkcję bezpośrednio do menu w arkuszu musimy dodać krótki kod, który umożliwi użytkownikowi uruchomienie funkcji. Warto tutaj zaznaczyć, że funckja onOpen jest funkcją która dostępna jest w obrębie naszego skryptu i domyślnie uruchamiana jest zawsze kiedy użytkownik otwiera plik. Po dodaniu tego kodu i aktualizacji, możesz przejść do swojego arkusza i go odświeżyć. Po chwili od otwarcia powinna pojawić Ci się nowa pozycja w menu o nazwie Extra funkcje.

function onOpen(){
    const ui = SpreadsheetApp.getUi();
    ui.createMenu("Extra funkcje")
    .addItem("Dodaj rekordy", "addValuesToRows")
    .addToUi();
}

Optymalizacja kodu

Zdecydowanie bardziej rekomendowanym podejściem do wybierania arkuszy jest korzystanie z innego sposobu wyboru arkusza np. za pomocą nazwy lub numeru ID arkusza. Jeśli mielibyśmy wybrać ten arkusz za pomocą nazwy, to po prostu skorzystalibyśmy z innej metody dostarczanej nam przez Google Apps Script:

function addValuesToRows() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dane pracowników");
 employeeData.forEach((employee) => {
 sheet.appendRow([employee.name, employee.phone, employee.branch])
 })
}

Pamiętaj, że w parametrze getSheetByName musisz podać prawidłową nazwę arkusza, inaczej wystąpi błąd i skrypt zakończy działanie. Dla prawidłowego działania funkcji zalecane jest korzystanie z bloków try … catch.

Jeśli pracujemy nad poprawkami, to zapis danych w naszej funkcji też pozostawia trochę do życzenia – dane w Google Apps Script lepiej zapisywać seryjnie a nie pojedynczo wiersz po wierszu. Poprawmy w takim razie nasz kod i zapiszmy wszystkich pracowników za jednym razem do pierwszego wolnego wiersza.

Podobne wpisy