Podstawy Apps Script w Arkuszach Google nr 2: Arkusze kalkulacyjne, Arkusze i Zakresy

1. Wstęp

Witamy w drugiej części playlisty Podstawy skryptu Google Apps Script z Arkuszami Google. Poprzednie ćwiczenia z programu koncentrowały się na pojęciach związanych z edytorem skryptów, makrami i funkcjami niestandardowymi. W ćwiczeniach z programowania dowiesz się więcej na temat usługi Arkusz kalkulacyjny, której możesz używać do odczytywania, zapisywania i manipulowania danymi w Arkuszach Google.

Czego się nauczysz

  • Jak arkusze kalkulacyjne, arkusze i zakresy są reprezentowane w Apps Script.
  • Jak uzyskać dostęp do aktywnego (otwartego) arkusza kalkulacyjnego, a także zmienić jego nazwę za pomocą klasy SpreadsheetApp i Spreadsheet.
  • Jak zmienić nazwę arkusza i orientację zakresu kolumn/wierszy w klasie Sheet.
  • Jak określić, aktywować, przenieść lub posortować grupę lub zakres danych za pomocą klasy Range.

Zanim zaczniesz

To drugie szkolenie z programowania, które obejmuje playlistę Podstawy korzystania z Apps Script w Arkuszach Google. Zanim zaczniesz, wykonaj pierwsze ćwiczenia z programowania: Makra i funkcje niestandardowe.

Czego potrzebujesz

  • Podstawowe informacje o tematach Apps Script omówionych w poprzednim ćwiczeniu z tej playlisty.
  • Podstawowe informacje o edytorze Apps Script
  • Podstawowe informacje o Arkuszach Google
  • Możliwość czytania Arkuszy notacja A1
  • Podstawowa znajomość JavaScriptu i jego klasy String

W następnej sekcji omówimy główne klasy usługi Arkusz kalkulacyjny.

2. Wprowadzenie do usługi Arkusz kalkulacyjny

Podstawowe zagadnienia z tej usługi obejmują 4 klasy: SpreadsheetApp, Spreadsheet, Sheet i Range. W tej sekcji opisano te zajęcia i do czego służą.

Klasa spreadsheetApp

Zanim przejdziesz do arkuszy kalkulacyjnych, arkuszy i zakresów, sprawdź klasy nadrzędne: SpreadsheetApp. Wiele skryptów zaczyna się od wywoływania metod SpreadsheetApp, bo stanowią one początkowy punkt dostępu do plików Arkuszy Google. SpreadsheetApp można traktować jako główną klasę usługi arkuszy kalkulacyjnych. Klasa SpreadsheetApp nie jest tutaj szczegółowo omawiana. Później znajdziesz jednak przykłady i ćwiczenia, które pomogą Ci zrozumieć te zajęcia.

Arkusze kalkulacyjne, arkusze kalkulacyjne i ich klasy

Arkusz kalkulacyjny to plik Arkuszy Google (przechowywany na Dysku Google) zawierający dane uporządkowane według wierszy i kolumn. Arkusz kalkulacyjny jest czasem nazywany „Arkuszem Google” – tak samo, jak dokument jest określany jako „Dokument Google”.

Klasa Spreadsheet pozwala przeglądać i modyfikować dane plików Arkuszy Google. Możesz też używać tej klasy do innych operacji na poziomie plików, na przykład dodając współpracowników.

f00cc1a9eb606f77.png

Arkusz** reprezentuje pojedynczą stronę arkusza kalkulacyjnego, nazywaną czasem „"tab.&quot”. Każdy arkusz kalkulacyjny może zawierać jeden lub więcej arkuszy. Do korzystania z danych i ustawień na poziomie arkusza, takich jak przenoszenie wierszy lub kolumn danych, możesz używać klasy Sheet**.

39dbb10f83e3082.png

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

Klasa zakresu

Większość operacji na danych (np. odczytu, zapisu lub formatowania danych w komórkach) wymaga określenia komórek, których dotyczy dana operacja. Za pomocą klasy Range możesz wybierać określone komórki w arkuszu. Wystąpienia tej klasy reprezentują zakres – grupę co najmniej jednej sąsiedniej komórki w arkuszu. Zakresy możesz określić za pomocą ich wierszy i kolumn lub za pomocą notacji A1.

W pozostałej części ćwiczeń z programowania znajdziesz przykłady skryptów, które działają z tymi zajęciami oraz ich metody.

3. Skonfiguruj

Aby kontynuować, potrzebujesz arkusza kalkulacyjnego z danymi. Udostępniamy Ci go: kliknij ten link, aby skopiować arkusz danych, a następnie kliknij Utwórz kopię.

5376f721894b10d9.png

Kopia przykładowego arkusza kalkulacyjnego, którego możesz użyć, znajduje się w Twoim folderze na Dysku Google i jest zatytułowana „"Kopia arkusza kalkulacyjnego bez tytułu”. Użyj tego arkusza kalkulacyjnego, aby ukończyć ćwiczenia z programowania.

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

Gdy otworzysz projekt Apps Script w edytorze skryptu, edytor automatycznie utworzy dla Ciebie zarówno skrypt, jak i plik skryptu.

Z następnej sekcji dowiesz się, jak wykorzystać klasę Spreadsheet do ulepszenia tego arkusza kalkulacyjnego.

4. Uzyskiwanie dostępu do arkuszy kalkulacyjnych i ich modyfikowanie

Z tej sekcji dowiesz się, jak używać zajęć SpreadsheetApp i Spreadsheet do otwierania i modyfikowania arkuszy kalkulacyjnych. Z ćwiczeń dowiesz się, jak zmienić nazwę arkusza kalkulacyjnego i powielić arkusze w arkuszu kalkulacyjnym.

To proste działania, ale często są one częścią większego, bardziej złożonego procesu. Gdy zrozumiesz, jak zautomatyzować takie zadania za pomocą kodu skryptu, łatwiej będzie Ci przejść przez bardziej złożone operacje.

Zmień nazwę aktywnego arkusza kalkulacyjnego

Załóżmy, że chcesz zmienić domyślną nazwę &"Kopia arkusza kalkulacyjnego bez tytułu na tytuł, który lepiej odzwierciedla przeznaczenie Twojego arkusza kalkulacyjnego. Możesz to zrobić w klasach SpreadsheetApp i Spreadsheet.

  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, wykonując instrukcje wyświetlane na ekranie. Jeśli pojawi się komunikat „Ta aplikacja nie jest zweryfikowana”, kliknij Zaawansowane, a następnie Przejdź do cen Avocado (niebezpieczne). Na następnym ekranie kliknij Zezwól.

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

226c7bc3c2fbf33e.png

Przyjrzyjmy się wpisanemu kodowi. Metoda getActiveSpreadsheet() zwraca obiekt reprezentujący aktywny arkusz kalkulacyjny, czyli kopię utworzonego arkusza ćwiczeń. Ten obiekt arkusza kalkulacyjnego jest przechowywany w zmiennej mySS. Wywołanie rename(newName) w mySS spowoduje zmianę nazwy pliku arkusza kalkulacyjnego na Dysku Google na „Ceny Avocado 2017 w Portland w Seattle”.

Zmienna mySS jest odwołaniem do arkusza kalkulacyjnego, więc możesz zwiększyć czytelność kodu i usprawnić jego działanie, wywołując metody Spreadsheet na mySS, zamiast wywoływać funkcję getActiveSpreadsheet().

Duplikowanie aktywnego arkusza

W bieżącym arkuszu kalkulacyjnym jest tylko jeden arkusz. Aby utworzyć kopię arkusza, możesz wywołać metodę Spreadsheet.duplicateActiveSheet():

  1. Dodaj nową funkcję poniżej funkcji 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ć nową kopię „Arkusz_oryginału” wstawionej do arkusza.

d24f9f4ae20bf7d4.gif

W nowej funkcji metoda duplicateActiveSheet() tworzy, aktywuje i zwraca duplikat arkusza w arkuszu kalkulacyjnym. Powstały arkusz jest przechowywany w narzędziu duplicateSheet, ale kod nie ma na nim jeszcze żadnych działań.

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

5. Formatowanie arkusza za pomocą klasy arkusza

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

Zmienianie nazwy arkusza

Zmienianie nazw arkuszy było równie proste 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 zmodyfikuj funkcję duplicateAndOrganizeActiveSheet() tak, by pasowała do tych:
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ę.

Po uruchomieniu funkcji w Arkuszach Google tworzony jest duplikat arkusza:

91295f42354f62e7.gif

Metoda setName(name) dodaje w kodzie dodany kod duplicateSheet z użyciem getSheetID(), aby pobrać unikalny numer identyfikacyjny arkusza. Operator + łączy identyfikator arkusza z końcem ciągu "Sheet_".

Modyfikowanie kolumn i wierszy arkusza

Aby sformatować arkusz, możesz też użyć klasy Sheet. Możemy na przykład zaktualizować funkcję duplicateAndOrganizeActiveSheet(), aby zmieniła rozmiar kolumn duplikatu arkusza i dodała zablokowane wiersze:

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmodyfikuj funkcję duplicateAndOrganizeActiveSheet() tak, by pasowała do tych:
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 tworzony jest zduplikowany arkusz, zmienia się jego nazwę, aktywuje się i formatuje:

2e57c917ab157dad.gif

Dodany kod korzysta z metody autoResizeColumns(startColumn, numColumns), która zmienia rozmiar kolumn arkusza, aby zwiększyć ich czytelność. Metoda setFrozenRows(rows) blokuje określoną liczbę wierszy (w tym przypadku dwa), dzięki czemu wiersze nagłówka są widoczne, gdy czytnik przewija stronę w dół.

W kolejnej sekcji poznasz zakresy i podstawowe sposoby przetwarzania danych.

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

Klasa Range i jej metody zapewniają większość opcji manipulacji danymi i ich formatowania w usłudze arkusza kalkulacyjnego.

W tej sekcji opisujemy podstawowe opcje manipulowania danymi za pomocą zakresów. Ćwiczenia skupiają się na tym, jak korzystać z zakresów w Apps Script, a inne ćwiczenia z tej playlisty zawierają bardziej szczegółowe informacje o manipulacji danymi i ich formatowaniu.

Przenieś zakresy

Zakresy danych możesz aktywować i przenosić za pomocą metod klas i notacji A1 – skróconych wersji do określania określonych komórek w arkuszach kalkulacyjnych. Jeśli chcesz się dowiedzieć więcej, zajrzyj do tego opisu notacji A1.

Zaktualizujmy Twoją metodę duplicateAndOrganizeActiveSheet(), by przenieść też niektóre dane:

  1. W Arkuszach Google kliknij arkusz Sheet_Original, aby go aktywować.
  2. W Apps Script zmodyfikuj funkcję duplicateAndOrganizeActiveSheet() tak, by pasowała do tych:
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ę, zostanie utworzony, aktywowany i sformatowany duplikat arkusza. Poza tym zawartość kolumny F zostaje przeniesiona do kolumny C:

10ea483aec52457e.gif

Nowy kod wykorzystuje metodę getRange(a1Notation) do określenia zakresu danych do przeniesienia. Wpisując zapis A1 &Ft;F2:F" jako parametr metody, określasz kolumnę F (z wyłączeniem F1). Jeśli istnieje określony zakres, metoda getRange(a1Notation) zwraca instancję Range. Kod ułatwia przechowywanie instancji w zmiennej myRange.

Po zidentyfikowaniu zakresu metoda moveTo(target) pobiera zawartość myRange (zarówno wartości, jak i formatowanie), a następnie je przenosi. Miejsce docelowe (kolumna C) jest określone w notacji A1 &Cyt.C2&quot. Jest to jedna komórka, a nie kolumna. Podczas przenoszenia danych nie musisz dopasowywać rozmiarów do zakresów docelowych i docelowych. Apps Script po prostu wyrównuje pierwszą komórkę każdego fragmentu.

Sortuj zakresy

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 zmodyfikuj funkcję duplicateAndOrganizeActiveSheet() tak, by pasowała do tych:
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 oprócz funkcji formatowania posortowane są wszystkie dane w tabeli zgodnie z informacjami o cenie w kolumnie C:

A6cc9710245fae8d.png

Nowy kod używa tagu getRange(a1Notation), aby określić nowy zakres obejmujący A3:D55 (całą tabelę z wyłączonymi nagłówkami kolumn). Następnie kod wywołuje metodę sort(sortSpecObj), by posortować tabelę. Parametr sortSpecObj to numer kolumny, według którego możesz sortować dane. Metoda sortuje zakres tak, aby wskazane wartości kolumn zmieniały się z malejących na najwyższe. Metoda sort(sortSpecObj) może spełniać bardziej złożone wymagania dotyczące sortowania, ale nie są one potrzebne. Wszystkie różne sposoby wywoływania zakresów sortowania możesz znaleźć w dokumentacji referencyjnej metody.

Gratulacje! Udało Ci się ukończyć wszystkie ćwiczenia w ćwiczeniach z programowania. W następnej części omówimy najważniejsze punkty ćwiczenia z ćwiczeniami z programowania, a następnie wyświetlimy kolejny fragment ćwiczenia z tej playlisty.

7. Podsumowanie

To już koniec ćwiczenia z programowania. Teraz możesz używać i definiować podstawowe klasy i warunki usługi Arkusz kalkulacyjny w Apps Script.

Możesz teraz przejść do następnego ćwiczenia z programowania.

Czy te ćwiczenia są przydatne?

Tak Nie

Omawiane zagadnienia

Co dalej

Następne ćwiczenia z tej playlisty zawierają bardziej szczegółowe informacje o odczytywaniu, zapisywaniu i modyfikowaniu danych w arkuszu kalkulacyjnym.

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