Satura rādītājs
Kažkas tai sukūrė prieš trejus metus. Skriptas perkeldavo Google Forms atsakymus į užsakymų lentelę, kas rytą išsiųsdavo sandėliui el. laišką ir sukurdavo pristatymo įvykius komandos kalendoriuje. Niekas nežino, kaip jis veikia, o šįryt jis sustojo. Lentelėje matote „Exceeded maximum execution time”, arba el. pašte yra pranešimas, kad trigeris neįvykdytas, arba žmogus, kuris jį parašė, birželį išėjo iš darbo, ir jo sukurtos automatizacijos sustojo.
Tai Google Apps Script problema ir viena iš dažniausių pagalbos užklausų, kurias gauname iš įmonių, kuriose už automatizaciją niekas nėra paskirtas atsakingu. Šiame straipsnyje: trys gedimų tipai, kuriuos matome dažniausiai, kaip kiekvieną jų saugiai diagnozuoti, ir momentas, kai sąžiningas patarimas yra perkelti automatizaciją kitur. Kvotos ir elgsena patikrintos pagal Google Apps Script dokumentaciją 2026 m. rugsėjo 9 d.
Pirmiausia išsiaiškinkite, kas tiksliai neveikia
Atidarykite skaičiuoklę ar dokumentą, kuriame skriptas gyvena, tada Extensions, Apps Script. Jei automatizacija yra atskiras projektas, o ne prie lentelės pririštas skriptas, ieškokite jo script.google.com. Kairėje pusėje skiltis Executions rodo kiekvieną paskyros, su kuria esate prisijungę, vykdymą su būsena ir klaidos tekstu. Surūšiuokite pagal būseną ir pasižymėkite paskutinį sėkmingą vykdymą. Paprastai pamatysite vieną iš trijų vaizdų: raudonas eilutes su Exceeded maximum execution time, eilutes su autorizacijos ar leidimų klaida arba apskritai jokių eilučių per pastarąsias dienas. Pastarasis vaizdas dar neįrodo, kad trigeris dingo: gali būti, kad atidarytas ne tas projektas ar ne ta paskyra, įjungtas filtras arba trigerio savininko paskyra nebeaktyvi. Prieš darydami išvadas, atidarykite Triggers (laikrodžio piktograma).
1 gedimas: 6 minučių limitas
Įprastas Apps Script vykdymas gali trukti 6 minutes, tada Google jį nutraukia. Tai galioja ir privačioms, ir Workspace paskyroms. Paprastiems trigeriams, pavyzdžiui, onEdit, ir pasirinktinėms funkcijoms langeliuose limitas gerokai trumpesnis: 30 sekundžių. Dažniausia priežastis, kodėl skriptas, kuris anksčiau spėdavo, dabar viršija limitą, yra augimas: prieš trejus metus lentelėje buvo 400 eilučių, ir ciklas baigdavosi per 40 sekundžių, dabar eilučių yra 40 000, ir tam pačiam ciklui reikia 20 minučių. Tačiau tai ne vienintelė priežastis: lėta išorinė paslauga, ciklas, kuris kaskart perdirba viską, arba formulėmis perkrauta lentelė daro tą patį, todėl Executions žurnale pažiūrėkite, kiek laiko vykdymai truko prieš prasidedant klaidoms. Panašiai skaudžiai pasijunta ir dienos kvotos: bendras trigerių vykdymo laikas per dieną (90 minučių privačioms paskyroms, 6 valandos Workspace), el. laiškų gavėjų skaičius per dieną (100 privačioms, 1500 Workspace) ir URL užklausų skaičius. Kvotos taikomos kiekvienam naudotojui atskirai, ir Google jas kartais keičia, todėl šiuos skaičius laikykite aktualiais šiems metams.
Sprendimai: nuo pigiausio iki imliausio darbui
- Nustokite skaityti ir rašyti po vieną langelį. Didžiausias kaltininkas. Skriptas, kuris cikle kviečia
getValue()irsetValue(), kiekvienoje iteracijoje kreipiasi į skaičiuoklių paslaugą. Nuskaityti visą diapazoną vieną kartą sugetValues(), apdoroti atmintyje ir įrašyti atgal vieną kartą susetValues()yra gerokai greičiau: pačios Google gerosios praktikos puslapyje tas pats darbas nuo daugiau nei minutės sutrumpėja iki maždaug sekundės. Daugumai skriptų, kurie viršydavo limitą, po šio vieno pakeitimo problema išnyksta. - Apdorokite tik tai, kas nauja. Pridėkite stulpelį „apdorota” arba laiko žymą ir praleiskite eilutes, kurias skriptas jau apdorojo. Eilutę žymėkite kaip apdorotą tik tada, kai jos darbas tikrai pavyko, kitaip nepavykęs vykdymas paliks eilutes su žyma „atlikta”, nors iš tikrųjų jos neapdorotos. Kasdienis darbas, kuris kaskart perdirba visą istoriją, yra antra dažniausia priežastis.
- Padalykite darbą į kelis vykdymus. Išsaugokite progresą su
PropertiesService, sustokite prieš limitą ir leiskite kitam trigeriui tęsti ten, kur baigėsi ankstesnis. Pridėkite užraktą (LockService), kad du vykdymai nepersidengtų ir neišsiųstų laiškų du kartus. Patikima, bet kažkas turi suprasti kodą. - Archyvuokite lentelę. Perkelkite eilutes, su kuriomis įmonė nebedirba, į atskirą failą. Greitesnis skriptas, greitesnė skaičiuoklė, laimingesni naudotojai.
2 gedimas: leidimų ir autorizacijos klaidos
Pranešimai skamba taip: „This app isn’t verified”, „Google hasn’t verified this app”, „This app is blocked” arba „Authorization is required to perform that action”. Jie reiškia skirtingus dalykus.
- „This app isn’t verified” arba „Google hasn’t verified this app”. Skriptas prašo prieigos prie Gmail, Drive ar Calendar, ir Google rodo įspėjimą, nes OAuth projektas nėra praėjęs patikros. Projektai, kurie priklauso vienai Workspace organizacijai ir naudojami jos viduje, nuo verifikacijos paprastai atleisti, todėl, jei šį įspėjimą matote prie skripto, kurį laikote vidiniu, sustokite ir patikrinkite: kam priklauso Apps Script projektas, prie kurio Cloud projekto jis pririštas ir kokių tiksliai leidimų (scopes) jis prašo. Agentūros ar buvusio rangovo parašytas skriptas gali būti jų paskyroje. Tik tada, kai savininkas ir leidimai patvirtinti, administratorius jį autorizuoja; nemokykite darbuotojų iš įpročio spausti „Advanced”.
- „This app is blocked”. Dažniausiai jūsų Workspace administratorius apribojo trečiųjų šalių programų prieigą, ir tada taisoma Administratoriaus pulte (Admin console): Security, Access and data control, API controls, Manage third-party app access, leidžiant būtent šį skriptą tiems naudotojams, kuriems jo reikia. Pirmiausia perskaitykite visą klaidos kodą, nes tie patys žodžiai gali kilti ir iš OAuth kliento konfigūracijos problemos. Neišjunkite šios kontrolės visai organizacijai ir automatiškai nepasitikėkite visomis „vidinėmis” programomis: leiskite tik tą vieną, kurią patikrinote.
- „Authorization is required to perform that action”. Skripto leidimai buvo atšaukti arba jam dabar reikia leidimo, kurio anksčiau nereikėjo. Autorizuokite iš naujo, paleisdami funkciją rankiniu būdu, bet rinkitės ją atidžiai: atsitiktinai pasirinkta funkcija gali išsiųsti laiškus ar perrašyti eilutes. Naudokite nekenksmingą funkciją, pavyzdžiui, nedidelę
function autorizuoti() { Logger.log('ok'); }, kuri naudoja tas pačias paslaugas, ir paleiskite ją iš paskyros, kuriai priklauso trigeriai. - Niekas neveikia nuo tada, kai kolega išėjo. Įdiegiamieji trigeriai vykdomi juos sukūrusio žmogaus vardu, ir, kai jo paskyra sustabdoma ar ištrinama, jie sustoja. Failo perdavimas esamam darbuotojui trigerių neperkelia: naujasis savininkas kito naudotojo nustatytų trigerių net nemato. Todėl išsiaiškinkite, ką skriptas turėjo daryti ir kada, sukurkite naujus trigerius iš aktyvios paskyros, patikrinkite pirmuosius vykdymus Executions žurnale ir stebėkite, ar neatsiranda dublikatų, jei senoji paskyra tik sustabdyta ir gali būti atkurta. Verslui svarbioms automatizacijoms trigerius kurkite iš atskiros Workspace naudotojo paskyros (pavyzdžiui, „automatizacija@”) su atskira licencija ir patvirtinimu dviem veiksmais (2SV), už kurį atsako IT, o ne skripto autorius. Tai valdoma naudotojo paskyra, ne Google Cloud paslaugos paskyra: Apps Script trigeriai kaip paslaugos paskyra vykdomi būti negali.
3 gedimas: Google kažką pakeitė
Rečiau, bet pasitaiko. Senoji Apps Script Rhino vykdymo aplinka uždaroma (Google anksčiausia uždarymo data nustatė 2026 m. sausio 31 d.), ir labai seni skriptai, kurie niekada nebuvo perkelti į V8, gali nustoti veikti arba elgtis kitaip. Atidarykite projekto nustatymus ir patikrinkite, kurią vykdymo aplinką jis naudoja; Google V8 migracijos vadove išvardytos konstrukcijos, kurios nebeveikia. Kartais pasikeičia kurios nors Google paslaugos elgsena, ir ja besiremiantis skriptas nustoja veikti. Patikrinkite Executions žurnale, ar klaida nauja ir anksčiau nematyta, ir ieškokite tikslaus teksto. Jei ji tą pačią dieną pasirodė daugeliui, problema greičiausiai Google pusėje, bet „palaukite dieną” tinka tik tada, jei verslas gali sau tai leisti; kitu atveju pereikite prie rankinio atsarginio varianto ir išsaugokite žurnalus.
Kada perkelti automatizaciją iš Apps Script
Apps Script tinka nedidelėms darbo eigoms sujungti: forma, kuri pildo lentelę, lentelė, kuri siunčia priminimą, kalendorius, kuris atspindi grafiką. Tačiau tai netinkamas įrankis, kai tinka bent vienas iš šių teiginių:
- Po aukščiau aprašytų pataisymų jis vis dar viršija 6 minučių limitą arba dienos kvotų išnaudojimas artėja prie ribos.
- Jei jis sustoja, sustoja verslas, ir niekas to nepastebėtų visą dieną, nes nėra stebėsenos ir nėra klaidų pranešimų gavėjo, kuris dar dirbtų įmonėje.
- Jį taisė keli žmonės, ir nė vienas iš jų negali paaiškinti, kaip jis veikia.
- Jis tapo įmonės užsakymų, sandėlio ar klientų sistema, kurioje keli žmonės vienu metu rašo į vieną lentelę. Sheets nėra duomenų bazė, ir skriptas jos tokia nepaverčia.
Vien eilučių skaičius to nelemia: 40 000 eilučių, apdorojamų dalimis, yra gerai, o 400 eilučių su vienu metu rašančiais naudotojais ir be klaidų apdorojimo – ne. Tada pasirinkimas, pradedant nuo mažiausio darbo: sutvarkyti esamą skriptą ir paskirti jam atsakingą asmenį, stebėseną ir užraktą; palikti lentelę kaip sąsają, bet sunkųjį apdorojimą perkelti į nedidelę Cloud Run paslaugą; arba pereiti prie paruoštos verslo sistemos, kuri šį darbą jau atlieka. Nė vienas variantas pats savęs neprižiūri: Cloud Run paslauga, kurios niekas nestebi, yra tokia pat neskaidri kaip skriptas, kurio niekas nestebi. Sakome tai kaip įmonė, parašiusi ir perėmusi daug Apps Script sprendimų: toliau veikia tie, kurie yra maži, aiškiai apibrėžti ir turi įvardytą atsakingą asmenį.
Dažniausiai užduodami klausimai
Kiek ilgai gali veikti Google Apps Script?
6 minutes įprastame vykdyme, tiek privačioms, tiek Workspace paskyroms. Paprastiems trigeriams ir pasirinktinėms funkcijoms langelyje yra 30 sekundžių. Papildomai galioja dienos kvotos trigerių vykdymo laikui, el. laiškų gavėjams ir URL užklausoms, kurios Workspace paskyroms yra didesnės.
Kodėl skriptas sustojo, kai darbuotojas išėjo?
Įdiegiamieji trigeriai vykdomi juos sukūrusio žmogaus vardu. Sustabdžius ar ištrynus šią paskyrą, jie sustoja, ir niekas kitas šių trigerių nemato ir negali taisyti. Sukurkite juos iš naujo iš aktyvios paskyros, idealiu atveju iš atskiro automatizacijos naudotojo, ir patikrinkite, ar neatsiranda dvigubų vykdymų.
Ar Workspace administratorius gali matyti, kokie skriptai įmonėje veikia?
Iš dalies. Administratoriaus pultas skiltyje API controls rodo OAuth programas ir jų leidimus, o Google Cloud konsolė išvardija Apps Script projektus, pririštus prie Cloud projekto. Skriptai atskirose lentelėse centralizuotai neapskaitomi, o tai geras argumentas verslui kritinius skriptus laikyti bendriname diske, kurį prižiūri IT.
Susiję straipsniai
- Google Workspace paskyra sustabdyta. Ką daryti?
- Kaip gauti Google Workspace pagalbą, kai kažkas neveikia
- Valdomos IT paslaugos Google Workspace įmonėms
Jei skriptas, nuo kurio priklauso jūsų verslas, sustojo, atsiųskite klaidos tekstą iš Executions žurnalo, paskutinio sėkmingo vykdymo laiką ir vieną sakinį apie tai, ką skriptas turėtų daryti; pagal tai paprastai galime greitai pasakyti, ar tai nedidelis pataisymas, ar perdarymas, ir susitarti dėl darbo apimties, prieš ką nors keičiant.
Automatizacija sustojo ir niekas už ją neatsako? Įvertiname darbo eigą, trigerius ir vykdymo paskyras, tada su atsakingu asmeniu suderiname pataisymą ir priežiūros planą. Registruotis nemokamam 30 minučių auditui arba skambinkite +371 22 30 50 90.


