V tomto tutoriále si ukážeme základy práce s Google App Script. Je to veľmi silný nástroj, ktorý nám umožňuje nielen urýchliť opakujúce sa činnosti, ktoré vykonávame v Google Docs, Spreadsheets alebo Forms ale aj zautomatizovať napríklad odosielanie emailov po vykonaní nejakej akcie. Ukážeme si jednoduchý príklad toho, ako využiť Google App Script na vyplnenie šablón a následne odoslanie emailov.
Úvod
Google Apps Script je skriptovací jazyk založený na JavaScripte 1.6 (pričom obsahuje časti aj z 1.7 a 1.8), ktorý umožňuje vývojárom vytvárať skripty/rozšírenia pre aplikácie od spoločnosti Google ako napríklad Dokumenty, Tabuľky a Formuláre. Skript je séria inštrukcií napísaných v programovacom alebo skriptovacom jazyku, určených na vykonanie konkrétnej úlohy. Pričom nie je potrebné nič sťahovať pretože tieto skripty sa vyvíjajú priamo v internetovom prehliadači a nebežia na strane vývojára, ale na serveroch Google.
Pomocou Google Apps Script je možné vytvárať rôzne typy skriptov a to:
- samostatné skripty (standalone) — jedná sa o skripty, ktoré priamo nerozširujú a nie sú naviazané na žiadnu Google aplikáciu (napríklad skript ktorý vyhľadá na Drive súbory s určitým menom);
- viazané skripty (bound) — sú skripty, ktoré rozširujú funkcionalitu Google aplikácií a vykonávajú konkrétne operácie nad konkrétnymi súbormi (uverejniť môžete skript oba typy skriptov);
- webové aplikácie (web app) — sú skripty, ktoré majú vytvorenú nejakú formu používateľského rozhrania. Vo všeobecnosti platí, že obe vyššie spomenuté typy skriptov sa dajú pretvoriť na webovú aplikáciu.
Ďalšie informácie o Google App Skript nájdete v oficiálnej dokumentácii Google a v článku na Wikipédii.
Ako začať
Nato aby ste mohli začať tvoriť scripty je potrebné mať vytvorený účet na Google. Pokiaľ už máte vytvorený účet otvorte stránku script.google.com. Pokiaľ túto stránku otvárate prvýkrát je zobrazená úvodná obrazovka a pre spustenie online vývojárskeho prostredia je potrebné kliknúť na tlačidlo s názvom “Create App Script”. Potom by ste už mali vidieť takúto obrazovku:
IDE je jednoducho ovládateľné a veľmi intuitívne. Ako prvé si môžete všimnúť veľkú bielu šípku, ktorá slúži na otvorenie Google disku, teda miesta kde sa skripty ukladajú. Máme k dispozícií základne menu v ktorom vieme otvárať vytvorené súbory, meniť nastavenia, prezerať zdroje, publikovať skripty (o tom viac v kapitole Publikovanie skriptov), a veľa ďalšieho. Základná lišta tlačidiel nám umožňuje sa vrátiť o krok späť/vpred, zapnúť/vypnúť automatické formátovanie textu, uložiť script, publikovať ako webovú aplikáciu, nastaviť automatické spúšťanie skriptu, spustiť skript, spustiť v móde debug, zoznam funkcií a tlačidlo pre zobrazenie upozornení, ktoré sa rozsvieti, keď sú použité napríklad zastarané funkcie.
Ďalšie informácie: Quickstart: Add-on for Google Docs .
Písanie prvých skriptov
V tomto tutoriále sa predpokladá, že máte základne znalosti jazyku JavaScript, preto sa tu nebudú vysvetľovať pojmy ako napríklad premenná, funkcia, atď. Začnime teda hneď s programovaním.
Vytvorenie a spustenie prvého samostatného skriptu
Poďme vytvoriť prvý jednoduchý skript, aby sme sa bližšie zoznámili s prostredím. Vytvorme nový súbor kliknútim na File → New → Script File a zadaním jeho názvu. Teraz napíšeme skript, ktorý vytvorí nový Google Dokument a vloží do neho jeden riadok textu “Hello World”.
function createFirstDocument() {
var doc = DocumentApp.create('My First Document');
doc.getBody().appendParagraph('Hello World');
}
Poďme si rozobrať jednotlivé riadky kódu. Prvý riadok vytvára novú funkciu s názvom createFirstDocument
. Druhý riadok vytvorí lokálnu premennú doc
a priradí tejto premennej odkaz na nový dokument, získaný volaním funkcie create
triedy DocumentApp
s názvom dokumentu ako parametrom. V treťom riadku získame telo dokumentu pomocou funkcie getBody()
a priradíme telu odsek pomocou funkcie appendParagraph('Hello World')
, ktorej ako parameter zadáme text ktorý chceme pridať. Bližšie informácie o týchto funkciách je možné nájsť v príručke.
Skopírujte a spustite tieto riadky kódu. Normálne by bolo potrebné vybrať ktorú funkciu chceme spustiť, ale pretože máme vytvorenú len jednu, tento krok preskočíme. Pri spúšťaní skriptov sa niekedy môže otvoriť okno, ktoré žiada autorizáciu pre služby Google. Prečítajte si ho a potvrďte. Ak sa skript úspešne vykonal, tak po otvorení Disku Google by sme mali vidieť jeden nový dokument s názvom “My First Document” a po jeho otvorení vidieť text “Hello World”. Ak sa vám to podarilo tak gratulujem, práve ste úspešne vytvorili svoj prvý samostatný skript.
Vytvorenie a spustenie prvého viazaného skriptu
Keďže viazané skripty sú priamo napojené na konkrétny dokument, je nutné najprv vybrať a otvoriť tento dokument aby sme mohli začať písať viazaný skript. Po otvorení dokumentu z lišty vyberte možnosť Tools → Script Editor. Teraz sa otvorí vývojárske prostredie naviazané na dokument. Rozdiel v písaní viazaného skriptu a samostatného je napríklad v získavaní dokumentu, pretože viazaný skript je spojený s jedným konkrétnym dokumentom, na získanie referencie na dokument používame funkciu DocumentApp.getActiveDocument()
. Predtým ako začneme písať skript chcem pripomenúť že musíte mať naraz otvorené obe webové stránky, teda stránku s dokumentom a so skriptom, po zatvorení stránky s dokumentom sa automaticky zatvorí stránka so skriptom. Po úspešnom spustení skriptu nie je potrebné obnovovať stránku dokumentu, to sa deje automaticky.
Poďme napísať skript pre dokument, ktorý sme pred chvíľou vytvorili. Skript nájde v tomto dokumente slovo “World” a nahradí ho slovom “Peter”. Čo by teoreticky mohol byť užitočný skript napríklad, keby sme chceli poslať email veľkému počtu ľudí, stačilo by napísať jeden so značkami kam sa ma vložiť meno každého prijímateľa, v našom prípade slovo “World”. Na to použijeme funkciu replaceText(searchPattern, replacement)
nad telom dokumentu. Pričom searchPattern je slovo ktoré, sa ma nahradiť a replacement je to, čo chceme vložiť. Celý kód teda bude vyzerať takto.
function byeWorldHelloPeter() {
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText("World", "Peter");
}
Po spustení tohto skriptu sa v dokumente nahradí slovo “World” slovom “Peter”.
Vytvorenie používateľského menu
Doteraz sme skript spúšťali z vývojárskeho prostredia no jednoduchší spôsob by bol, keby sme pre neho vytvorili položku v menu. V skripte dokážeme vytvoriť položku v menu len ak je viazaný. Na vytvorenie menu použijeme funkciu, ktorá sa automaticky volá po vykonaní akcie (trigger). Na výber máme z týchto funkcii:
onInstall(e)
— volá sa pri nainštalovaní rozšírenia,onOpen(e)
— volá sa pri otvorení dokumentu,doPost(e)
— volá sa keď program pošle POST požiadavku webovej aplikácii,doGet(e)
— volá sa keď užívateľ navštívi webovú aplikáciu, alebo keď program pošle GET požiadavku webovej aplikácii.
Pričom e je parameter ktorý obsahuje bližšie informácie o dôvode prečo sa zavolala funkcia. S používaním týchto triggrov sa spájajú aj určité podmienky. Medzi ne patrí to, že skript musí byť viazaný, nesmie vykonávať akcie na ktoré potrebuje autorizáciu (napr. môže pristupovať len k súboru s ktorým je zviazaný), nemôže bežať dlhšie ako 30 sekúnd.
Na vytvorenie menu je výhodne použiť funkciu onOpen()
, keďže menu chceme mať prístupné od začiatku práce s dokumentom. Pre vytvorenie menu potrebujeme získať odkaz na UI dokumentu. To sa robí pre každý typ dokumentu ináč a zvykne to byť častá chyba pri vytváraní menu, možno aj preto, že v tutoriáloch od Google Developers to nie je napísane jasne. Teda si treba uvedomiť, že
- pre Google Dokumenty/Docs požívame
DocumentApp.getUi()
, - pre Google Tabuľky/Spreadsheet požívame
SpreadsheetApp.getUi()
, - pre Google Formuláre/Forms požívame
FormApp.getUi()
.
V našom prípade vytvárame menu pre Google Dokumenty, takže použijeme DocumentApp.getUi()
pre získanie referencie na UserInterface. Potom musíme vytvoriť objekt Menu zavolaním funkcie createMenu(caption)
, pričom parameter caption je názov menu. Nad takto vytvoreným objektom voláme funkcie pre pridanie položiek do menu. To sa robí za pomoci funkcie addItem(caption, functionName)
, prvý parameter predstavuje názov položky v menu a druhý je názov funkcie ktorá sa má vykonať. Zavolaním týchto dvoch funkcii sa ešte nevytvorí menu, najprv treba nad týmto objektom ešte zavolať funkciu addToUi()
. Teda náš kód na pridanie menu položky bude vyzerať takto.
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('ByeWorld')
.addItem('HelloPeter', 'byeWorldHelloPeter')
.addToUi();
}
function byeWorldHelloPeter() {...}
Telo funkcie byeWorldHelloPeter()
musí obsahovať kód, ktorý vykoná zmenu (tento kód sme vytvorili v predošlej kapitole).
Po napísaní skriptu sa nám ale automaticky nevytvorí na stránke s otvoreným dokumentom. Vytvoriť ho môžeme dvoma spôsobmi. Prvým je uloženie skriptu a zatvorenie a opätovné otvorenie dokumentu, druhým je vybranie funkcie onOpen()
zo zoznamu a spustenie vykonania. Potom by sme mali vidieť naše menu v lište dokumentu (viď. obrázok) a po kliknutí na položku HelloPeter sa spustí funkcia byeWorldHelloPeter()
, ktorá zmení každý výskyt slova World na Peter.
Pokiaľ by sme chceli ale vytvoriť komplikovanejšie menu máme k dispozícii ešte funkcie ako addSeparator()
, ktorá vytvorí oddeľovač v menu a addSubMenu(menu)
, ktorá vytvorí submenu. Na ďalšom obrázku vidíte príklad vytvorenia komplikovanejšieho menu a kód ktorý ho vytvoril.
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('ByeWorld')
.addItem('HelloPeter', 'byeWorldHelloPeter')
.addItem('HelloWorld', 'byePeterHelloWorld')
.addSeparator()
.addSubMenu(
ui.createMenu('More Options')
.addItem('Delete All', 'deleteAll')
.addItem('Fill with Random', 'randomFill')
)
.addToUi();
}
function byeWorldHelloPeter() {...}
function byePeterHelloWorld() {...}
function deleteAll() {...}
function randomFill() {...}
Poznámka: Opäť pre správne fungovanie kódu treba doplniť telá funkcií.
Ďalšie informácie:
Vytváranie dialógových okien
Dialógové okná sú okná ktoré informujú užívateľa o nejakej správe, alebo ho tiež môžu žiadať o nejaké informácie. V tejto sekcii si ukážeme ako takéto dialógové okná vytvárať pričom budeme rozlišovať výstražné, vstupné a špeciálne, ktoré umožňujú spúšťať HTML alebo UI služby. Začnime Výstražným dialógovými oknami, pretože sú najjednoduchšie na implementáciu. Pričom budeme vychádzať z kódu ktorý sme vytvorili v predošlých sekciách.
Výstražné dialógové okná
Výstražné (alert) dialógové okná väčšinou zobrazujú správu a minimálne jedno tlačidlo na potvrdenie. Pokiaľ je toto dialógové okno aktívne vykonávanie skriptu sa pozastaví, kým ho používateľ nepotvrdí. Na vytvorenie tohto okna sa používa funkcia alert()
ktorá má tri verzie s rôznym počtom argumentov (volá sa nad objektom užívateľského rozhrania UI):
alert(prompt)
— základné dialógove okno s jedným potvrdzujúcim tlačidlom a správouprompt
,alert(prompt, buttons)
— okno s viacerými tlačidlami a správouprompt
,alert(title, prompt, buttons)
— okno s viacerými tlačidlami, nadpisom a správouprompt
.
Pridajme teda výstražne okno pred vykonanie funkcie, ktorá zmení všetky výskyty slov, aby sme na to upozornili užívateľa.
function onOpen() {...}
function byeWorldHelloPeter() {
DocumentApp.getUi().alert("Changing World -> Peter");
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText("World", "Peter");
}
Poznámka: Pridali sme prvý riadok vo funkcii byeWorldHelloPeter()
, telo funkcie onOpen() ostáva nezmenené z predošlej kapitoly.
Po spustení by sa malo otvoriť takéto okno a nevykonať žiadne zmeny kým sa nepotvrdí.
Je veľmi dobré, že používateľ už vie o tom, že po vybraní tejto položky v menu sa mu prepíšu slová v dokumente. Pokiaľ by sa ale rozhodol, že nechce takéto zmeny vykonať nemá tú možnosť. Preto urobme okno viac “user-friendly” a poskytnime užívateľovi okrem možnosti Ok aj možnosť Cancel. Čiže musíme pridať parameter buttons
pri volaní funkcie alert. Tento parameter je typu enum ButtonSet
a obsahuje tieto možnosti:
OK
— jednoduché tlačidlo OKYES_NO
— výber yes/noOK_CANCEL
— výber ok/cancelYES_NO_CANCEL
— výber yes/no/cancel
Ďalšou vecou ktorú je potrebné urobiť je kontrolovať ktoré tlačidlo používateľ zvolil. To je návratová hodnota funkcie alert, keďže doteraz sme ju neukladali teraz už budeme. A po vykonaní ju porovnáme s enum Button {YES, NO, OK, CANCEL}
a tak zistíme ktorú možnosť si užívateľ vybral. Podľa toho potom necháme zbehnúť kód, ktorý sa má vykonať.
function onOpen() {...}
function byeWorldHelloPeter() {
var ui = DocumentApp.getUi();
var response = ui.alert("Changing World -> Peter", ui.ButtonSet.OK_CANCEL);
if (response == ui.Button.OK) {
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText("World", "Peter");
}
}
Vstupné (prompt) dialógové okná
Tieto dialógové okná sa líšia od výstražných tým, že vyžadujú vstup od používateľa. Môže to byť napríklad informácia o používateľovi (meno, priezvisko, vek a pod.). Vstupné okná taktiež pozastavia vykonávanie skriptu a obnovia ho až po zatvorení okna. V tomto našom prípade by sa to dalo využiť na to, aby užívateľ vedel zadať aké meno sa má nahradiť namiesto nášho zástupného slova, ktoré už premenujme z “World” na “_name_”. Takto vytvorené vstupné okno môžeme vidieť na nasledujúcom obrázku.
Teda v dokumente budeme mať text napríklad “Dobrý deň pan _name_, dnes mame pre Vás špeciálnu ponuku…” a chceme vytvoriť vstupné okno do ktorého zadáme meno, ktoré má nahradiť _name_. Funkcia slúžiaca na vytvorenie nového vstupného okna je prompt()
volaná nad objektom užívateľského rozhrania. Funkcia prompt()
má tri konštruktory s rozdielnym počtom parametrov a to:
prompt(prompt)
— parameterprompt
je reťazec ktorý sa ma zobraziť na obrazovke,prompt(prompt, buttons)
— pridaný parameterbuttons
je rovnaký ako v kapitole výstražných okien,prompt(title, prompt, buttons)
— pridaný parametertitle
je rovnaký ako v kapitole výstražných okien.
Môžeme použiť tretí konštruktor, kde v názve pomenujeme funkciu, v prompte vysvetlíme používateľovi čo od neho chceme a špecifikovaním tlačidiel mu dovolíme zrušiť okno bez vykonania akcie. Po vytvorení okna a zadaní vstupu používateľom potrebujeme zistiť čo zadal a ktoré tlačidlo stlačil aby sme sa vedeli príslušne zachovať. Na to si potrebujeme uložiť návratovú hodnotu PromptResponse funkcie prompt()
, ktorá obsahuje tieto informácie. Potom na získanie vstupu od užívateľa slúži volanie funkcie getResponseText()
nad objektom PromptResponse, ktorá vráti reťazec zadaného textu. Na získanie stlačeného tlačidla použijeme getSelectedButton()
takisto nad objektom PromptResponse, ktorá vráti hodnotu z enum ButtonSet
(podobne ako pri výstražných oknách).
Teraz by sme už mali vedieť napísať kód ktorý splní predom špecifikovaný účel a mal by vyzerať takto:
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Replacement Menu')
.addItem('Replace Name Placeholder', 'replacePlaceholderName').addToUi();
}
function replacePlaceholderName() {
var ui = DocumentApp.getUi();
var promptRet = ui.prompt(
'_name_ Replacement',
'Enter new name:',
ui.ButtonSet.OK_CANCEL);
var text = promptRet.getResponseText();
var button = promptRet.getSelectedButton();
if (button == ui.Button.OK) {
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText("_name_", text);
}
}
Poznámka: Všimnite si že som pozmenil názvy vo funkcii onOpen()
aby bližšie špecifikovali účel vytvoreného menu.
Ďalšie informácie:
Vytváranie sidebarov
Sidebar je bočné menu, ktoré môže plniť funkciu používateľského rozhrania alebo HTML služby. Ukážeme si ako vytvoriť jednoduchý sidebar. Začneme tým, že vytvoríme HTML súbor, ktorý budeme v tomto bočnom okne zobrazovať. Aby tento príklad bol čo najjednoduchší, v tomto HTML súbore vytvorme 2 tlačidlá. Jedno bude volať už vytvorenú funkciu replacePlaceholderName()
a druhé bude zatvárať tento sidebar. HTML súbor je potrebné vytvoriť priamo v Google disku, pokiaľ ho vytvoríme inak a len ho uložíme na disk nemusí to fungovať. Vytvoriť HTML súbor môžeme napríklad v editore skriptov kliknutím na File → New → HTML file. Po jeho vytvorení napíšme kód na zobrazenie tlačidiel takto:
<input type="button" value="Set Name" /><br />
<input type="button" value="Close Sidebar"/>
Keď už máme vytvorený HTML súbor je potrebné ho už len nechať zobraziť v sidebare. Na tento účel vytvorme funkciu s názvom napríklad showSidebar()
. Tá musí robiť dve veci, prvá je vytvorenie sidebaru a druhá je jeho zobrazenie. Na jeho vytvorenie použijeme funkciu createHtmlOutputFromFile(blob)
nad triedou HtmlService
, ktorá slúži na vrátenie HTML a iného textového obsahu zo skriptu. Tento HTML súbor môže obsahovať CSS a Javascript, ale Javascript len v tom prípade, že sa ide o štandardný Javascript, ktorý pracuje len s DOM a nie o Apps Script. Ako argument blob budeme používať názov našej HTML stránky, bližšie informácie o BlobSource môžete nájsť v dokumentácii rozhrania BlobSource.
Zobrazenie Sidebaru dosiahneme volaním funkcie showSidebar(sidebar)
kde ako parameter pošleme náš vytvorený sidebar. Teda kód ktorý toto vykoná bude vyzerať takto:
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('sidebar').setTitle("My First Sidebar");
DocumentApp.getUi().showSidebar(html);
}
Pridajme ho teraz do nášho už vytvoreného menu.
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Replacement')
.addItem('Replace Name Placeholder', 'replacePlaceholderName')
.addItem('Show SideBar', 'showSidebar').addToUi();
}
Po spustení kódu zistíme, že sidebar sa síce otvoril ale po kliknutí na Tlačidlá sa nevykoná žiadna akcia. Na vykonanie akcie musíme tlačidlám doplniť atribút onclick
, kde zadáme čo sa má vykonať. Pokiaľ chceme vykonať funkciu ktorú sme už vytvorili použijeme google.script.run.
a doplníme názov funkcie. Na zavretie sidebaru slúži google.script.host.close()
. HTML kód by mal teraz vyzerať takto:
<input type="button" value="Set Name" onclick="google.script.run.replacePlaceholderName()" /><br />
<input type="button" value="Close Sidebar" onclick="google.script.host.close()" />
Po spustení by prvé tlačidlo malo volať funkciu replacePlaceholderName()
, ktorá spustí dialogové okno a druhé tlačidlo bude zatvárať sidebar.
Ďalšie informácie:
Využitie získaných znalostí — automatické odosielanie emailov
Na záver si poďme ukázať ako nám Google App Script umožní odoslať Email automaticky na emailové adresy v našom zozname kontaktov. Ten ma každý kto používa Gmail automaticky vytvorený na základe jeho emailovej komunikácie. Zobraziť si ho v dokumente pomocou skriptu môžete napríklad aj takto:
function showContacts(){
contact = ContactsApp.getContacts();
var body = DocumentApp.getActiveDocument().getBody();
for(var i=0; i < contact.length; i++)
body.appendParagraph("Email: " + contact[i].getPrimaryEmail());
}
Využívame na to triedu ContactsApp
ktorá nám umožňuje pristupovať, upravovať a pracovať s našimi Google kontaktmi. Taktiež umožňuje vytvoriť rôzne kontaktné skupiny ktoré si vieme spravovať sami. Bližšie informácie a popis je na stránkach dokumentácie.
Pre získanie zoznamu kontaktov použijeme funkciu getContacts()
. Takýto zoznam kontaktov obsahuje informácie ako napríklad celé meno, adresu, emailové adresy, ID používateľa atď. Na naše účely nám postačí funkcia getPrimaryEmail()
, ktorá vracia hlavný email daného kontaktu. Potom si ho už jednoducho necháme vypísať. Jediné čo nám teraz chýba na odosielanie emailov je zistiť ako vlastne takýto email odoslať.
Na odosielanie emailov slúžia triedy MailApp a GmailApp, ale keďže my nebudeme pracovať s naším inboxom a chceme len odoslať email tak nám postačí trieda MailApp. Na poslanie emailu si môžeme vybrať z funkcií:
sendEmail(message)
, kde parametrom je správa, ktorá je štruktúrovaná ako JSON a všetky potrebné informácie sú v nej (email, názov, telo, prilohy atď…), ide o najflexibilnejšiu verziu funkcie;sendEmail(recipient, subject, body)
, kde paramterami su prijímateľ, názov emailu, a telo emailu teda správa;sendEmail(recipient, subject, body, options)
, kde options parameter znamená Javascript objekt ktorý špecifikuje ďalšie parametre (príloha, bcc, cc, …);sendEmail(to, replyTo, subject, body)
— parameter to znamená prijímateľa a replyTo predstavuje adresu odpovede.
My použijeme druhú verziu teda sendEmail(recipient, subject, body)
. Prijímateľov sme získali z našich kontaktov, názov môže byť napríklad “My First App Script Email”, a ako telo pošlime URL odkaz na náš Google document. Emaily môžeme odoslať pomocou cyklu alebo tak, že uvedieme všetkých prijímateľov do prvého parametra a oddelíme ich čiarkou. Teraz by sme už mali mať všetky vedomosti nato, aby sme takýto skript vytvorili:
function sendEmail(){
contact = ContactsApp.getContacts();
var body = DocumentApp.getActiveDocument();
for(var i=0; i < contact.length; i++){
var email = contact[i].getPrimaryEmail();
MailApp.sendEmail(email,
"My firs app script email",
"Link to my document " + body.getUrl());
}
}
Poznámka: Rád by som dodal, že mať takúto moc odosielať emaily je veľká zodpovednosť a preto by nemala byť zneužitá k otráveniu života vašich kamarátov ;) . Samozrejme, že odosielanie emailov a niektoré ďalšie služby majú denné obmedzenia tie si môžete pozrieť na stránke Quota Limits.
Záver
Google App Script je veľmi zaujímavá technológia, ktorá dokáže uľahčiť prácu s dokumentami a automatizovať určité opakujúce sa činnosti. Vďaka tomu dokáže používateľ ušetriť veľké množstvo času, ktoré by inač strávil napríklad upravovaním dokumentu. V tomto tutoriále nie je ani zďaleka rozobraná celá kapacita možností, ktoré Google App Script ponúka, pretože je toho naozaj veľa. Kladne sa chcem vyjadriť aj na stránku dokumentácie pretože je naozaj na vysokej úrovni a zrozumiteľná aj pre úplných začiatočníkov.