Sisukord
Vajate abi Google Workspace’iga?

Kirjeldage, mis ei tööta – vastame samal päeval.

Keegi ehitas selle kolm aastat tagasi. Skript kandis Google Formsi vastused tellimuste tabelisse, saatis igal hommikul laole e-kirja ja lõi meeskonna kalendrisse tarnesündmused. Keegi ei tea, kuidas see töötab, ja täna hommikul see seiskus. Tabelis on näha “Exceeded maximum execution time”, või on e-postis teade, et päästik (trigger) ei käivitunud, või lahkus inimene, kes selle kirjutas, juunis töölt ja tema loodud automatiseeringud jäid seisma.

See on Google Apps Scripti probleem ja üks sagedasemaid tugipäringuid, mida saame ettevõtetelt, kus automatiseeringul ei ole määratud vastutajat. Selles artiklis: kolm tõrketüüpi, mida näeme teistest sagedamini, kuidas igaüht neist turvaliselt diagnoosida, ja hetk, mil aus nõuanne on automatiseering mujale viia. Kvoodid ja käitumine on kontrollitud Google Apps Scripti dokumentatsiooni järgi 2026-09-09.

Kõigepealt selgitage välja, mis täpselt ei tööta

Avage arvutustabel või dokument, milles skript elab, seejärel Extensions, Apps Script. Kui automatiseering on eraldi projekt, mitte tabeliga seotud skript, otsige seda aadressil script.google.com. Vasakul asuv jaotis Executions näitab iga käivitust koos oleku ja veatekstiga selle konto jaoks, millega olete sisse loginud. Sorteerige oleku järgi ja märkige üles viimane õnnestunud käivitus. Tavaliselt näete üht kolmest pildist: punased read tekstiga Exceeded maximum execution time, read autoriseerimis- või õiguste veaga, või viimastel päevadel üldse mitte ühtegi rida. Viimane ei tõesta, et päästik on kadunud: see võib tähendada ka valet projekti, valet kontot, filtrit või päästikut, mille omaniku konto ei ole enam aktiivne. Enne järelduste tegemist avage Triggers (kellaikoon).

1. tõrge: 6 minuti piirang

Tavaline Apps Scripti käivitus tohib kesta 6 minutit, seejärel Google selle katkestab. See kehtib nii era- kui ka Workspace’i kontodele. Lihtsatel päästikutel, näiteks onEdit, ja lahtrites kasutatavatel kohandatud funktsioonidel on piirang tunduvalt lühem: 30 sekundit. Kõige sagedasem põhjus, miks varem mahtunud skript nüüd piirangu vastu jookseb, on kasv: kolm aastat tagasi oli tabelis 400 rida ja tsükkel lõppes 40 sekundiga, nüüd on ridu 40 000 ja sama tsükkel vajab 20 minutit. See pole siiski ainus põhjus: aeglane väline teenus, tsükkel, mis töötleb iga kord kõik uuesti läbi, või valemitega ülekoormatud tabel teevad sama, seega vaadake Executionsi logist, kui kaua käivitused enne vigade algust kestsid. Samamoodi võivad ette jääda päevakvoodid: päästikute kogu käivitusaeg päevas (90 minutit erakontodel, 6 tundi Workspace’is), e-kirja saajate arv päevas (100 erakontodel, 1500 Workspace’is) ja URL-päringute arv. Kvoodid on kasutajapõhised ja Google kipub neid muutma, seega käsitlege neid arve selle aasta seisuna.

Sama igapäevane töö, kirjutatud kolmel viisil (illustratiivne, mitte mõõtmine)6 minuti piirangLahter lahtri haavalgetValue() ja setValue() tsüklisjookseb 6 minuti piirangu vastu; ülejäänud read jäävad töötlemataÜhe korragagetValues() ja setValues() üks kordsekundid, kõik read töödeldudÜhe korraga + ainult uued readjätab vahele read, mis on juba töödelduks märgitudkiireim, ja kasvab koos uute ridadega, mitte kogu tabeligaalgus6 minuti piirang

Lahendused odavaimast töömahukaimani

  1. Lõpetage lahtrite ükshaaval lugemine ja kirjutamine. Suurim süüdlane. Skript, mis kutsub tsüklis getValue() ja setValue(), suhtleb igal iteratsioonil arvutustabelite teenusega. Kogu vahemiku korraga lugemine getValues() abil, mälus töötlemine ja ühe korraga tagasi kirjutamine setValues() abil on tunduvalt kiirem: Google’i enda heade tavade lehel lüheneb sama töö enam kui minutilt umbes sekundini. Enamik piirangu vastu jooksvaid skripte ei jookse pärast seda üht muudatust enam.
  2. Töödelge ainult uut. Võtke kasutusele veerg “töödeldud” või ajatempel ja jätke vahele read, mille skript on juba töödelnud. Märkige rida töödelduks alles siis, kui selle töö tõesti õnnestus, muidu jätab ebaõnnestunud käivitus ridadele märke “valmis”, mis seda ei ole. Igapäevane töö, mis töötleb iga kord kogu ajaloo uuesti läbi, on sageduselt teine põhjus.
  3. Jagage töö käivituste vahel. Salvestage edenemine PropertiesService abil, peatuge enne piirangut ja laske järgmisel päästikul jätkata sealt, kus eelmine lõpetas. Lisage lukk (LockService), et kaks käivitust ei kattuks ega saadaks kirju kaks korda. Usaldusväärne, aga keegi peab koodist aru saama.
  4. Arhiveerige tabel. Viige read, millega ettevõte enam ei tööta, eraldi faili. Kiirem skript, kiirem arvutustabel, õnnelikumad kasutajad.

2. tõrge: õiguste ja autoriseerimise vead

Veateated on “This app isn’t verified”, “Google hasn’t verified this app”, “This app is blocked” või “Authorization is required to perform that action”. Need tähendavad eri asju.

  • “This app isn’t verified” või “Google hasn’t verified this app”. Skript küsib ligipääsu Gmailile, Drive’ile või Calendarile ja Google näitab hoiatust, sest OAuth-projekt ei ole verifitseerimist läbinud. Projektid, mis kuuluvad ühele Workspace’i organisatsioonile ja mida kasutatakse selle sees, on verifitseerimisest tavaliselt vabastatud, seega kui näete seda hoiatust skripti juures, mida peate sisemiseks, peatuge ja kontrollige: kellele Apps Scripti projekt kuulub, millise Cloud-projektiga see on seotud ja milliseid õigusi (scopes) see täpselt küsib. Agentuuri või endise allhankija kirjutatud skript võib elada nende kontol. Alles siis, kui omanik ja õigused on kinnitatud, autoriseerib administraator selle; ärge õpetage töötajaid harjumusest “Advanced” vajutama.
  • “This app is blocked”. Kõige sagedamini on teie Workspace’i administraator piiranud kolmandate osapoolte rakenduste ligipääsu ja siis on parandus halduskonsoolis (Admin console): Security, Access and data control, API controls, Manage third-party app access, lubades just selle skripti neile kasutajatele, kes seda vajavad. Kõigepealt lugege läbi täielik veakood, sest samad sõnad võivad tulla ka OAuth-kliendi konfiguratsiooni probleemist. Ärge lülitage kontrolli kogu organisatsioonile välja ega usaldage automaatselt kõiki “sisemisi” rakendusi: lubage see üks, mille olete üle kontrollinud.
  • “Authorization is required to perform that action”. Skripti õigused on tühistatud või see vajab nüüd õigust, mida varem ei olnud. Autoriseerige uuesti, käivitades funktsiooni käsitsi, aga valige see hoolikalt: juhuslikult valitud funktsioon võib saata kirju või ridu üle kirjutada. Kasutage kahjutut, näiteks väikest function autoriseeri() { Logger.log('ok'); }, mis kasutab samu teenuseid, ja käivitage see kontolt, millele päästikud kuuluvad.
  • Miski ei tööta sellest ajast, kui kolleeg lahkus. Installitavad päästikud käivituvad selle inimesena, kes need lõi, ja kui tema konto peatatakse või kustutatakse, jäävad need seisma. Faili üleandmine olemasolevale töötajale päästikuid üle ei kanna: uus omanik teise kasutaja seatud päästikuid isegi ei näe. Seega selgitage välja, mida skript pidi tegema ja millal, looge olemasolevalt kontolt uued päästikud, kontrollige esimesi käivitusi Executionsi logis ja jälgige, kas ei teki duplikaate, kui vana konto on ainult peatatud ja seda saab taastada. Ärikriitiliste automatiseeringute päästikud looge eraldi Workspace’i kasutajakontolt (näiteks “automatiseering@”) oma litsentsi ja kaheastmelise kinnitamisega (2SV), mille eest vastutab IT, mitte skripti autor. See on hallatav kasutajakonto, mitte Google Cloudi teenusekonto: Apps Scripti päästikud teenusekontona käivituda ei saa.

3. tõrge: Google muutis midagi

Harvem, aga juhtub. Apps Scripti vana Rhino käituskeskkond suletakse (Google määras varaseimaks sulgemiskuupäevaks 2026-01-31) ja väga vanad skriptid, mida kunagi V8-le üle ei viidud, võivad lakata töötamast või käituda teisiti. Avage projekti seaded ja kontrollige, millist käituskeskkonda see kasutab; Google’i V8 migratsioonijuhend loetleb konstruktsioonid, mis katki lähevad. Vahel muutub mõne Google’i teenuse käitumine ja sellele toetunud skript läheb katki. Kontrollige Executionsi logist, kas viga on uus ja varem nägemata, ning otsige täpset teksti. Kui see on ühel päeval ilmunud paljudel, on süü tõenäoliselt Google’i poolel, aga “oodake päev” sobib ainult siis, kui äri saab seda endale lubada; muidu minge üle käsitsi varuvariandile ja säilitage logid.

Millal automatiseering Apps Scriptist ära viia

Apps Script sobib väikeste töövoogude ühendamiseks: vorm, mis täidab tabelit, tabel, mis saadab meeldetuletuse, kalender, mis peegeldab graafikut. See on vale tööriist niipea, kui kas või üks järgmistest peab paika:

  • See jookseb ka pärast eespool kirjeldatud parandusi endiselt 6 minuti piirangu vastu või päevakvootide kasutus läheneb piirile.
  • Kui see seiskub, seiskub äri, ja keegi ei märkaks seda terve päeva jooksul, sest puudub seire ja puudub veateadete saaja, kes veel ettevõttes töötab.
  • Seda on parandanud mitu inimest ja ükski neist ei oska selgitada, kuidas see töötab.
  • Sellest on saanud ettevõtte tellimuste, lao või kliendisüsteem, kus mitu inimest kirjutab korraga samasse tabelisse. Sheets ei ole andmebaas ja skript ei tee seda andmebaasiks.

Ridade arv üksi seda ei otsusta: 40 000 rida, mida töödeldakse osade kaupa, on korras, 400 rida samaaegsete kirjutajate ja veatöötluseta ei ole. Siis on valik, alustades väikseimast tööst: korrastada olemasolev skript ja anda sellele vastutaja, seire ja lukk; jätta tabel liideseks, aga viia raske töötlus väikesesse Cloud Runi teenusesse; või minna üle valmis ärisüsteemile, mis seda tööd juba teeb. Ükski variant ei hoia ennast ise üleval: Cloud Runi teenus, mida keegi ei jälgi, on sama pime kui skript, mida keegi ei jälgi. Ütleme seda ettevõttena, mis on kirjutanud ja üle võtnud palju Apps Scripti lahendusi: väikesed, selgelt piiritletud ja nimelise vastutajaga on need, mis töötavad edasi.

Korduma kippuvad küsimused

Kui kaua võib Google Apps Script töötada?

6 minutit tavalise käivituse puhul, nii era- kui ka Workspace’i kontodel. Lihtsatel päästikutel ja lahtris kasutatavatel kohandatud funktsioonidel on 30 sekundit. Lisaks kehtivad päevakvoodid päästikute käivitusajale, e-kirja saajatele ja URL-päringutele, mis on Workspace’i kontodel kõrgemad.

Miks skript seiskus, kui töötaja lahkus?

Installitavad päästikud käivituvad selle inimesena, kes need lõi. Selle konto peatamisel või kustutamisel jäävad need seisma ja keegi teine neid päästikuid ei näe ega saa parandada. Looge need uuesti olemasolevalt kontolt, ideaalis eraldi automatiseerimiskasutajalt, ja kontrollige, kas ei teki topeltkäivitusi.

Kas Workspace’i administraator näeb, millised skriptid ettevõttes töötavad?

Osaliselt. Halduskonsool näitab jaotises API controls OAuth-rakendusi ja nende õigusi ning Google Cloudi konsool loetleb Apps Scripti projektid, mis on Cloud-projektiga seotud. Üksikutes tabelites olevaid skripte tsentraalselt ei loetleta, mis on hea argument hoida ärikriitilisi skripte IT-osakonna hallatavas jagatud draivis.

Seotud artiklid

Kui skript, millest teie äri sõltub, on seiskunud, saatke meile veatekst Executionsi logist, viimase õnnestunud käivituse aeg ja üks lause selle kohta, mida skript peaks tegema; selle põhjal saame tavaliselt kiiresti öelda, kas tegu on väikese paranduse või ümberehitusega, ja leppida töömaht kokku enne, kui midagi puutume.

Automatiseering seiskus ja see ei kuulu kellelegi? Hindame töövoo, päästikud ja käivituskontod, seejärel lepime vastutajaga kokku paranduse ja hooldusplaani. Broneerige tasuta 30-minutiline audit või helistage +371 22 30 50 90.

Tellige automatiseeringu hindamine

FreeIT SIA · Google Cloudi partner Baltimaades alates 2012

Esimene Google Cloudi partner Baltimaades. Asutaja on Google’i sertifitseeritud juurutusspetsialist alates 2012 (sertifikaat nr 849). Google Workspace’i juurutamise, migratsioonide ja toe kogemus Balti ettevõtetele alates 2011.

Võtke ühendust · +371 22 30 50 90