Podstawy Apps Script w Arkuszach Google – część 2: arkusze kalkulacyjne, arkusze i zakresy

1. Wprowadzenie

Witamy w drugiej części playlisty z ćwiczeniami dotyczącymi podstaw Apps Script w Arkuszach Google. W poprzednim samouczku skupiliśmy się na koncepcjach edytora skryptów, makr i funkcji niestandardowych. W tym samouczku dowiesz się więcej o usłudze Arkusze, która umożliwia odczytywanie, zapisywanie i manipulowanie danymi w Arkuszach Google.

Czego się nauczysz

  • Sposób reprezentowania arkuszy kalkulacyjnych, arkuszy i zakresów w Apps Script.
  • Jak uzyskać dostęp do aktywnego (otwartego) arkusza kalkulacyjnego, utworzyć go i zmienić jego nazwę za pomocą klas SpreadsheetApp i Spreadsheet.
  • Jak zmienić nazwę arkusza oraz orientację kolumn i wierszy zakresu za pomocą klasy Sheet.
  • Jak określać, aktywować, przenosić i sortować grupę komórek lub zakres danych za pomocą klasy Range.

Zanim zaczniesz

To drugie szkolenie z serii Podstawy Apps Script w Arkuszach Google. Zanim zaczniesz, wykonaj pierwsze ćwiczenie: Makra i funkcje niestandardowe.

Czego potrzebujesz

  • znajomość podstawowych tematów dotyczących Apps Script, które zostały omówione w poprzednim samouczku z tej playlisty;
  • Podstawowa znajomość edytora Apps Script
  • Podstawowa znajomość Arkuszy Google.
  • Możliwość odczytywania arkuszy w notacji A1.
  • Podstawowa znajomość JavaScriptu i jego klasy String

W następnej sekcji przedstawimy główne klasy usługi Arkusze.

2. Wprowadzenie do usługi Arkusze

Usługa Arkusze obejmuje 4 klasy: SpreadsheetApp, Spreadsheet, Sheet i Range. W tej sekcji opisujemy te klasy i ich zastosowania.

Klasa SpreadsheetApp

Zanim zagłębisz się w arkusze kalkulacyjne, arkusze i zakresy, zapoznaj się z ich klasą nadrzędną: SpreadsheetApp. Wiele skryptów zaczyna się od wywoływania metod SpreadsheetApp, ponieważ mogą one stanowić początkowy punkt dostępu do plików Arkuszy Google. SpreadsheetApp to główna klasa usługi Arkusze kalkulacyjne. Klasa SpreadsheetApp nie jest tutaj szczegółowo omawiana. W dalszej części tych ćwiczeń z programowania znajdziesz przykłady i ćwiczenia, które pomogą Ci zrozumieć tę klasę.

arkusze kalkulacyjne i ich klasy,

W Arkuszach arkusz kalkulacyjny to plik Arkuszy Google (przechowywany na Dysku Google), który zawiera dane uporządkowane w wierszach i kolumnach. Arkusz kalkulacyjny jest czasami nazywany „Arkuszem Google”, podobnie jak dokument jest nazywany „Dokumentem Google”.

Aby uzyskać dostęp do danych w pliku Arkuszy Google i je modyfikować, możesz użyć klasy Spreadsheet. Możesz też używać tej klasy do innych operacji na poziomie pliku, np. dodawania współpracowników.

f00cc1a9eb606f77.png

Arkusz** to pojedyncza strona arkusza kalkulacyjnego, czasami nazywana „kartą”. Każdy arkusz kalkulacyjny może zawierać jeden lub więcej arkuszy. Możesz użyć klasy Sheet**, aby uzyskać dostęp do danych i ustawień na poziomie arkusza oraz je modyfikować, np. przenosić wiersze lub kolumny danych.

39dbb10f83e3082.png

Podsumowując, klasa Spreadsheet działa na kolekcji arkuszy i definiuje plik Arkuszy Google na Dysku Google. Klasa Sheet działa w poszczególnych arkuszach w arkuszu kalkulacyjnym.

Klasa Range

Większość operacji manipulowania danymi (np. odczytywanie, zapisywanie lub formatowanie danych w komórkach) wymaga określenia, do których komórek ma być zastosowana. Możesz użyć klasy Range, aby wybrać określone zestawy komórek w arkuszu. Instancje tej klasy reprezentują zakres, czyli grupę co najmniej 1 sąsiadujących ze sobą komórek w arkuszu. Zakresy możesz określać za pomocą numerów wierszy i kolumn lub notacji A1.

W pozostałej części tego przewodnika znajdziesz przykłady skryptów, które działają z tymi klasami i ich metodami.

3. Skonfiguruj

Zanim przejdziesz dalej, musisz mieć arkusz kalkulacyjny z danymi. Przygotowaliśmy dla Ciebie arkusz danych: kliknij ten link, aby skopiować arkusz danych, a następnie kliknij Utwórz kopię.

5376f721894b10d9.png

Kopia przykładowego arkusza kalkulacyjnego do użycia zostanie umieszczona w folderze na Dysku Google i będzie nosić nazwę „Kopia arkusza kalkulacyjnego bez tytułu”. Użyj tego arkusza, aby wykonać ćwiczenia z tego ćwiczenia.

Przypominamy, że edytor skryptów możesz otworzyć w Arkuszach Google, klikając Rozszerzenia> Apps Script.

Gdy po raz pierwszy otworzysz projekt Apps Script w edytorze skryptów, edytor utworzy dla Ciebie projekt skryptu i plik skryptu.

W następnej sekcji dowiesz się, jak użyć klasy Spreadsheet, aby ulepszyć ten arkusz kalkulacyjny.

4. uzyskiwać dostęp do arkuszy kalkulacyjnych i je modyfikować;

W tej sekcji dowiesz się, jak używać klas SpreadsheetApp i Spreadsheet do uzyskiwania dostępu do arkuszy kalkulacyjnych i ich modyfikowania. W ramach tych ćwiczeń dowiesz się, jak zmienić nazwę arkusza kalkulacyjnego i powielić arkusze w arkuszu kalkulacyjnym.

Są to proste operacje, ale często stanowią część większego, bardziej złożonego przepływu pracy. Gdy zrozumiesz, jak zautomatyzować te zadania za pomocą kodu skryptu, łatwiej będzie Ci się nauczyć automatyzowania bardziej złożonych operacji.

Zmienianie nazwy aktywnego arkusza kalkulacyjnego

Załóżmy, że chcesz zmienić domyślną nazwę „Kopia arkusza bez nazwy” na tytuł, który lepiej odzwierciedla przeznaczenie arkusza. Możesz to zrobić za pomocą klas SpreadsheetAppSpreadsheet.

  1. W edytorze skryptów zastąp domyślny blok kodu myFunction() tym kodem:
function renameSpreadsheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
  1. Aby zapisać skrypt, kliknij Zapisz zapisz.
  2. Aby zmienić nazwę projektu Apps Script, kliknij Projekt bez tytułu, wpisz „Ceny awokado” jako nową nazwę projektu i kliknij Zmień nazwę.
  3. Aby uruchomić skrypt, wybierz renameSpreadsheet z listy funkcji i kliknij Uruchom.
  4. Autoryzuj makro, postępując zgodnie z instrukcjami wyświetlanymi na ekranie. Jeśli pojawi się komunikat „Ta aplikacja nie została zweryfikowana”, kliknij Zaawansowane, a potem Otwórz stronę Avocado prices (niebezpieczna). Na następnym ekranie kliknij Zezwól.

Po wykonaniu funkcji nazwa pliku arkusza kalkulacyjnego powinna się zmienić:

226c7bc3c2fbf33e.png

Sprawdźmy wpisany kod. Metoda getActiveSpreadsheet() zwraca obiekt reprezentujący aktywny arkusz kalkulacyjny, czyli kopię arkusza ćwiczeń, którą utworzono. Ten obiekt arkusza kalkulacyjnego jest przechowywany w zmiennej mySS. Wywołanie funkcji rename(newName)mySS zmienia nazwę pliku arkusza kalkulacyjnego na Dysku Google na „2017 Avocado Prices in Portland, Seattle”.

Ponieważ zmienna mySS odnosi się do arkusza kalkulacyjnego, możesz uprościć i zwiększyć wydajność kodu, wywołując metody Spreadsheet na zmiennej mySS zamiast wielokrotnie wywoływać zmienną getActiveSpreadsheet().

Duplikowanie aktywnego arkusza

W obecnym arkuszu kalkulacyjnym masz tylko 1 arkusz. Aby utworzyć kopię arkusza, możesz wywołać metodę Spreadsheet.duplicateActiveSheet():

  1. Dodaj poniższą nową funkcję pod funkcją renameSpreadsheet(), która jest już w projekcie skryptu:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();
}
  1. Zapisz projekt skryptu.
  2. Aby uruchomić skrypt, wybierz duplicateAndOrganizeActiveSheet z listy funkcji i kliknij Uruchom.

Wróć do Arkuszy, aby zobaczyć, że do arkusza kalkulacyjnego została dodana nowa karta „Kopia arkusza_oryginalnego”.

d24f9f4ae20bf7d4.gif

W tej nowej funkcji metoda duplicateActiveSheet() tworzy, aktywuje i zwraca zduplikowany arkusz w arkuszu kalkulacyjnym. Wynikowy arkusz jest przechowywany w zmiennej duplicateSheet, ale kod jeszcze nic z nią nie robi.

W następnej sekcji użyjesz klasy Sheet, aby zmienić nazwę i sformatować zduplikowany arkusz.

5. Formatowanie arkusza za pomocą klasy Sheet

Klasa Sheet udostępnia metody, które umożliwiają skryptom odczytywanie i aktualizowanie arkuszy. W tej sekcji dowiesz się, jak zmienić nazwę arkusza i szerokość kolumn za pomocą metod z klasy Sheet.

Zmienianie nazwy arkusza

Zmiana nazwy arkusza jest tak samo prosta jak zmiana nazwy arkusza kalkulacyjnego w renameSpreadsheet(). Wymagane jest tylko jedno wywołanie metody.

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmień funkcję duplicateAndOrganizeActiveSheet(), aby pasowała do tego kodu:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
  1. Zapisz i uruchom funkcję.

W Arkuszach Google po uruchomieniu funkcji tworzony jest zduplikowany arkusz, który otrzymuje nową nazwę:

91295f42354f62e7.gif

W dodanym kodzie metoda setName(name) zmienia nazwę arkusza duplicateSheet, używając getSheetID() do pobrania unikalnego numeru identyfikatora arkusza. Operator + łączy identyfikator arkusza na końcu ciągu "Sheet_".

Modyfikowanie kolumn i wierszy arkusza

Do sformatowania arkusza możesz też użyć klasy Sheet. Możemy na przykład zaktualizować Twoją duplicateAndOrganizeActiveSheet() funkcję, aby zmieniała rozmiar kolumn zduplikowanego arkusza i dodawała zamrożone wiersze:

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmień funkcję duplicateAndOrganizeActiveSheet(), aby pasowała do tego kodu:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);
}
  1. Zapisz i uruchom funkcję.

W Arkuszach Google zostanie utworzony, zmieniony, aktywowany i sformatowany zduplikowany arkusz:

2e57c917ab157dad.gif

Dodany kod używa autoResizeColumns(startColumn, numColumns) do zmiany rozmiaru kolumn arkusza w celu poprawy czytelności. Metoda setFrozenRows(rows) zamraża podaną liczbę wierszy (w tym przypadku 2), dzięki czemu wiersze nagłówka są widoczne podczas przewijania arkusza w dół.

W następnej sekcji dowiesz się więcej o zakresach i podstawowej manipulacji danymi.

6. Zmiana kolejności danych za pomocą klasy Range

Klasa Range i jej metody zapewniają większość opcji manipulowania danymi i formatowania w usłudze Arkusze kalkulacyjne.

W tej sekcji znajdziesz podstawowe informacje o manipulowaniu danymi za pomocą zakresów. Te ćwiczenia skupiają się na tym, jak używać zakresów w Apps Script, a inne ćwiczenia w tej playliście bardziej szczegółowo omawiają manipulowanie danymi i formatowanie danych.

Przenoszenie zakresów

Możesz aktywować i przenosić zakresy danych za pomocą metod klasy i notacji A1, czyli skróconego sposobu identyfikowania określonych zestawów komórek w arkuszach kalkulacyjnych. Jeśli chcesz sobie przypomnieć, jak to zrobić, zapoznaj się z tym opisem notacji A1.

Zaktualizujmy metodę duplicateAndOrganizeActiveSheet(), aby przenosić też niektóre dane:

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmień funkcję duplicateAndOrganizeActiveSheet(), aby pasowała do tego kodu:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));
}
  1. Zapisz i uruchom funkcję.

Gdy uruchomisz tę funkcję, utworzony, aktywowany i sformatowany zostanie zduplikowany arkusz. Zawartość kolumny F zostanie przeniesiona do kolumny C:

10ea483aec52457e.gif

Nowy kod używa metody getRange(a1Notation) do określania zakresu danych do przeniesienia. Wpisując notację A1 „F2:F” jako parametr metody, określasz kolumnę F (z wyłączeniem F1). Jeśli określony zakres istnieje, metoda getRange(a1Notation) zwraca jego instancję Range. Kod przechowuje instancję w zmiennej myRange, aby ułatwić korzystanie z niej.

Po zidentyfikowaniu zakresu metoda moveTo(target) przenosi zawartość komórki myRange (zarówno wartości, jak i formatowanie). Miejsce docelowe (kolumna C) jest określone za pomocą notacji A1 „C2”. Jest to pojedyncza komórka, a nie kolumna. Podczas przenoszenia danych nie musisz dopasowywać rozmiarów do zakresów docelowych i miejsca docelowego. Apps Script po prostu wyrównuje pierwszą komórkę każdego z nich.

Sortowanie zakresów

Klasa Range umożliwia odczytywanie, aktualizowanie i porządkowanie grup komórek. Możesz na przykład posortować zakres danych za pomocą metody Range.sort(sortSpecObj):

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmień funkcję duplicateAndOrganizeActiveSheet(), aby pasowała do tego kodu:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));

  // Sort all the data using column C (Price information).
  myRange = duplicateSheet.getRange("A3:D55");
  myRange.sort(3);
}
  1. Zapisz i uruchom funkcję.

Teraz funkcja oprócz poprzedniego formatowania sortuje wszystkie dane w tabeli na podstawie informacji o cenie w kolumnie C:

a6cc9710245fae8d.png

Nowy kod używa zakresu getRange(a1Notation), aby określić nowy zakres obejmujący komórki A3:D55 (całą tabelę z wyjątkiem nagłówków kolumn). Następnie kod wywołuje metodę sort(sortSpecObj), aby posortować tabelę. Parametr sortSpecObj to numer kolumny, według której ma być wykonane sortowanie. Metoda sortuje zakres tak, aby wartości w wskazanej kolumnie były ułożone od najmniejszej do największej (rosnąco). Metoda sort(sortSpecObj) może spełniać bardziej złożone wymagania dotyczące sortowania, ale w tym przypadku nie jest to konieczne. Wszystkie sposoby wywoływania zakresów sortowania znajdziesz w dokumentacji referencyjnej metody.

Gratulacje, udało Ci się ukończyć wszystkie ćwiczenia w tym laboratorium. W następnej sekcji znajdziesz najważniejsze informacje z tego laboratorium i zapowiedź kolejnego laboratorium w tej playliście.

7. Podsumowanie

To już koniec tego ćwiczenia. Możesz teraz używać i definiować podstawowe klasy i terminy usługi Arkusze kalkulacyjne w Apps Script.

Możesz przejść do kolejnych ćwiczeń.

Czy ten codelab był przydatny?

Tak Nie

Omówione zagadnienia

Co dalej?

Kolejne ćwiczenie w tej playliście zawiera więcej informacji o tym, jak odczytywać, zapisywać i modyfikować dane w arkuszu kalkulacyjnym.

Kolejne ćwiczenia z programowania znajdziesz w sekcji Praca z danymi.