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
iSpreadsheet
. - 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.
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.
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ę.
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 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, 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ć:
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)
w 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()
:
- 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();
}
- Zapisz projekt skryptu.
- 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”.
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.
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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());
}
- Zapisz i uruchom funkcję.
W Arkuszach Google po uruchomieniu funkcji tworzony jest zduplikowany arkusz, który otrzymuje nową nazwę:
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:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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);
}
- Zapisz i uruchom funkcję.
W Arkuszach Google zostanie utworzony, zmieniony, aktywowany i sformatowany zduplikowany arkusz:
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:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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"));
}
- Zapisz i uruchom funkcję.
Gdy uruchomisz tę funkcję, utworzony, aktywowany i sformatowany zostanie zduplikowany arkusz. Zawartość kolumny F zostanie przeniesiona do kolumny C:
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)
:
- W Arkuszach Google kliknij arkusz
Sheet_Original
, aby go aktywować. - 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);
}
- Zapisz i uruchom funkcję.
Teraz funkcja oprócz poprzedniego formatowania sortuje wszystkie dane w tabeli na podstawie informacji o cenie w kolumnie C:
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?
Omówione zagadnienia
- Sposób reprezentowania arkuszy kalkulacyjnych, arkuszy i zakresów w Apps Script.
- Podstawowe zastosowania klas
SpreadsheetApp
,Spreadsheet
,Sheet
iRange
.
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.