Podstawy Apps Script w Arkuszach Google nr 2: Arkusze kalkulacyjne, Arkusze i Zakresy
Informacje o tym ćwiczeniu (w Codelabs)
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
iSpreadsheet
. - 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.
Arkusz** reprezentuje pojedynczą stronę arkusza kalkulacyjnego, nazywaną czasem „"tab."”. 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
**.
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ę.
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
.
- 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");
}
- Aby zapisać skrypt, kliknij Zapisz
.
- Aby zmienić nazwę projektu Apps Script, kliknij Projekt bez tytułu, wpisz „Ceny Awokado” jako nową nazwę projektu i kliknij Zmień nazwę.
- Aby uruchomić skrypt, wybierz
renameSpreadsheet
z listy funkcji i kliknij Uruchom. - 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ć:
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()
:
- Dodaj nową funkcję poniżej funkcji
renameSpreadsheet()
, która jest już w projekcie skryptu:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
}
- Zapisz projekt skryptu.
- Aby uruchomić skrypt, wybierz
duplicateAndOrganizeActiveSheet
z listy funkcji i kliknij Uruchom.
Wróć do Arkuszy, aby zobaczyć nową kopię „Arkusz_oryginału” wstawionej do arkusza.
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.
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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());
}
- Zapisz i uruchom funkcję.
Po uruchomieniu funkcji w Arkuszach Google tworzony jest duplikat arkusza:
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:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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);
}
- Zapisz i uruchom funkcję.
W Arkuszach Google tworzony jest zduplikowany arkusz, zmienia się jego nazwę, aktywuje się i formatuje:
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:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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"));
}
- 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:
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". 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)
:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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);
}
- Zapisz i uruchom funkcję.
Teraz oprócz funkcji formatowania posortowane są wszystkie dane w tabeli zgodnie z informacjami o cenie w kolumnie C:
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?
Omawiane zagadnienia
- Jak arkusze kalkulacyjne, arkusze i zakresy są reprezentowane w Apps Script.
- Podstawowe zastosowania klas
SpreadsheetApp
,Spreadsheet
,Sheet
iRange
.
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.