5 funkcji skryptów Arkuszy Google, które musisz znać

Arkusze Google(Google Sheets) to potężne narzędzie do obsługi arkuszy kalkulacyjnych w chmurze, które pozwala wykonywać prawie wszystko, co można zrobić w programie Microsoft Excel(Microsoft Excel) . Ale prawdziwą mocą Arkuszy Google(Google Sheets) jest funkcja Google Scripting , która jest z nimi związana.

Skrypty Google Apps(Google Apps) to narzędzie do wykonywania skryptów w tle, które działa nie tylko w Arkuszach Google(in Google Sheets) , ale także w Dokumentach Google, Gmailu, Google Analytics i prawie każdej innej usłudze Google(Google) w chmurze. Pozwala zautomatyzować te poszczególne aplikacje i zintegrować je ze sobą.

W tym artykule dowiesz się, jak rozpocząć korzystanie ze skryptów w Aplikacjach Google(Google Apps) , jak utworzyć podstawowy skrypt w Arkuszach Google(Google Sheets) do odczytu i zapisu danych w komórkach oraz jak korzystać z najskuteczniejszych zaawansowanych funkcji skryptów w Arkuszach Google .(Google Sheets)

Jak utworzyć skrypt Google Apps(How to Create a Google Apps Script)

Możesz już teraz zacząć tworzyć swój pierwszy skrypt Google Apps z poziomu (Google Apps)Arkuszy Google(Google Sheets)

Aby to zrobić, wybierz z menu Narzędzia , a następnie (Tools)Edytor skryptów(Script Editor) .

Spowoduje to otwarcie okna edytora skryptów i domyślną funkcję o nazwie myfunction() . Tutaj możesz tworzyć i testować swój skrypt Google(Google Script) .

Aby to zrobić, spróbuj utworzyć funkcję skryptu Arkuszy Google(Google Sheets) , która będzie odczytywać dane z jednej komórki, wykonywać na niej obliczenia i przesyłać ilość danych do innej komórki.

Funkcją pobierania danych z komórki są funkcje getRange() i getValue() . Możesz zidentyfikować komórkę według wiersza i kolumny. Jeśli więc masz wartość w wierszu 2 i kolumnie 1 (kolumna A), pierwsza część skryptu będzie wyglądać tak:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

To przechowuje wartość z tej komórki w zmiennej danych . (data)Możesz wykonać obliczenia na danych, a następnie zapisać te dane w innej komórce. Tak więc ostatnią częścią tej funkcji będzie:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

Po zakończeniu pisania funkcji wybierz ikonę dysku do zapisania. 

Przy pierwszym uruchomieniu nowej funkcji skryptu Arkuszy Google(Google Sheets) , takiej jak ta (poprzez wybranie ikony uruchamiania), musisz podać autoryzację(Authorization) skryptu do uruchomienia na Twoim koncie Google(Google Account) .

Zezwól na kontynuację. Po uruchomieniu skryptu zobaczysz, że skrypt zapisuje wyniki obliczeń w komórce docelowej.

Skoro już wiesz, jak napisać podstawową funkcję skryptu Aplikacji Google(Google Apps) , przyjrzyjmy się bardziej zaawansowanym funkcjom.

Użyj getValues ​​do załadowania tablic(Use getValues To Load Arrays)

Możesz przenieść koncepcję wykonywania obliczeń na danych w arkuszu kalkulacyjnym za pomocą skryptów na nowy poziom, używając tablic. Jeśli załadujesz zmienną w skrypcie Aplikacji Google(Google Apps) za pomocą funkcji getValues, zmienna będzie tablicą, która może wczytać wiele wartości z arkusza.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

Zmienna data to wielowymiarowa tablica, która przechowuje wszystkie dane z arkusza. Aby wykonać obliczenia na danych, użyj pętli for . Licznik pętli for będzie działał przez każdy wiersz, a kolumna pozostanie stała w zależności od kolumny, z której chcesz pobrać dane.

W naszym przykładowym arkuszu kalkulacyjnym możesz wykonać obliczenia na trzech wierszach danych w następujący sposób.

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

Zapisz(Save) i uruchom ten skrypt tak jak powyżej. Zobaczysz, że wszystkie wyniki znajdują się w kolumnie 2 w arkuszu kalkulacyjnym.

Zauważysz, że odwoływanie się do komórki i wiersza w zmiennej tablicowej jest inne niż w przypadku funkcji getRange. 

data[i][0] odnosi się do wymiarów tablicy, gdzie pierwszy wymiar to wiersz, a drugi to kolumna. Oba zaczynają się od zera.

getRange(i+1, 2) odnosi się do drugiego wiersza, gdy i=1 (ponieważ wiersz 1 to nagłówek), a 2 to druga kolumna, w której przechowywane są wyniki.

Użyj appendRow, aby zapisać wyniki(Use appendRow To Write Results)

Co zrobić, jeśli masz arkusz kalkulacyjny, w którym chcesz zapisać dane w nowym wierszu zamiast w nowej kolumnie?

Jest to łatwe dzięki funkcji appendRow . Ta funkcja nie zakłóci żadnych istniejących danych w arkuszu. Po prostu doda nowy wiersz do istniejącego arkusza.

Jako przykład utwórz funkcję, która będzie liczyła od 1 do 10 i wyświetlała licznik z wielokrotnością 2 w kolumnie Licznik .(Counter)

Ta funkcja wyglądałaby tak:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

Oto wyniki po uruchomieniu tej funkcji.

Przetwarzaj kanały RSS za pomocą URLFetchApp(Process RSS Feeds With URLFetchApp)

Możesz połączyć poprzednią funkcję skryptu Arkuszy Google i (Google Sheets)URLFetchApp , aby pobrać kanał RSS z dowolnej witryny i napisać wiersz w arkuszu kalkulacyjnym dla każdego artykułu ostatnio opublikowanego w tej witrynie.

Jest to w zasadzie metoda samodzielnego(DIY) tworzenia własnego arkusza kalkulacyjnego czytnika kanałów RSS !(RSS)

Skrypt, który to robi, również nie jest zbyt skomplikowany.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

Jak widać, Xml.parse wyciąga każdy element z kanału RSS(RSS) i rozdziela każdą linię na tytuł, link, datę i opis. 

Korzystając z funkcji appendRow , możesz umieścić te elementy w odpowiednich kolumnach dla każdego elementu w kanale RSS .

Dane wyjściowe w twoim arkuszu będą wyglądać mniej więcej tak:

Zamiast umieszczać adres URL(URL) kanału RSS w skrypcie, możesz umieścić w arkuszu pole z adresem URL(URL) , a następnie mieć wiele arkuszy – po jednym dla każdej witryny, którą chcesz monitorować.

Połącz ciągi(Concatenate Strings) i dodaj(Add) zwrot karetki(Carriage Return)

Możesz pójść o krok dalej w arkuszu kalkulacyjnym RSS , dodając kilka funkcji manipulacji tekstem, a następnie użyć funkcji poczty e-mail, aby wysłać do siebie wiadomość e-mail z podsumowaniem wszystkich nowych postów w kanale RSS witryny .

Aby to zrobić, pod skryptem, który utworzyłeś w poprzedniej sekcji, będziesz chciał dodać skrypt, który wyodrębni wszystkie informacje z arkusza kalkulacyjnego. 

Będziesz chciał zbudować wiersz tematu i treść wiadomości e-mail, analizując razem wszystkie informacje z tej samej tablicy „items”, której użyłeś do zapisania danych RSS w arkuszu kalkulacyjnym. 

Aby to zrobić, zainicjuj temat i wiadomość, umieszczając następujące wiersze przed pętlą For „elementy”.

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

Następnie na końcu pętli for „items” (zaraz po funkcji appendRow) dodaj następującą linię.

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

Symbol „+” połączy wszystkie cztery elementy razem, a następnie „ ” dla powrotu karetki po każdym wierszu. Na końcu każdego bloku danych tytułu będziesz potrzebować dwóch znaków powrotu karetki dla ładnie sformatowanej treści wiadomości e-mail.

Po przetworzeniu wszystkich wierszy zmienna „body” przechowuje cały ciąg wiadomości e-mail. Teraz możesz wysłać e-mail!

Jak wysłać e-mail w Google Apps Script(How To Send Email In Google Apps Script)

Następną sekcją Twojego skryptu Google(Google Script) będzie wysłanie „tematu” i „treści” pocztą elektroniczną. Zrobienie tego w Google Script jest bardzo łatwe.

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

MailApp to(MailApp) bardzo wygodna klasa wewnątrz skryptów Aplikacji Google(Google Apps) , która zapewnia dostęp do usługi poczty e-mail konta Google w celu wysyłania i odbierania wiadomości e-mail. Dzięki temu pojedyncza linia z funkcją sendEmail pozwala na wysłanie dowolnego e-maila(send any email) z samym adresem e-mail, wierszem tematu i treścią.

Tak będzie wyglądać otrzymana wiadomość e-mail. 

Połączenie możliwości wyodrębniania kanału RSS witryny , przechowywania go w Arkuszu Google(Google Sheet) i wysyłania go do siebie wraz z dołączonymi linkami URL sprawia, że ​​śledzenie najnowszych treści w dowolnej witrynie jest bardzo wygodne.

To tylko jeden przykład możliwości dostępnych w skryptach Aplikacji Google(Google Apps) w zakresie automatyzacji działań i integracji wielu usług w chmurze.



About the author

Jestem technikiem komputerowym z ponad 10-letnim doświadczeniem i doświadczeniem w pracy z urządzeniami z systemem Android. Od pięciu lat pracuję również w biurze, gdzie nauczyłem się obsługi Office 365 i MacOS. W wolnym czasie lubię spędzać czas na świeżym powietrzu, grając muzykę lub oglądając filmy.



Related posts