Exatamente isso que você leu. Existe o ponto em que as coisas podem ser melhores fora da planilha.
Pra um entusiasta de scripts, pode parecer um pouco paradoxal, mas esse dia chegou. Encontrei uma situação prática, onde os scripts não me deram uma solução satisfatória. Queria aqui listar algumas considerações sobre os motivos que me levaram a essas conclusões.
Cada uma das situações abaixo são alertas que indicam que talvez resolver o problema via Planilhas pode não ser a melhor alternativa. Algumas vezes conseguimos contornar (eu mesmo já contornei diversas vezes esses alertas, mudando o algoritmo, otimizando aqui e ali,..) mas as vezes é impraticável quando conseguir uma solução, seja por tempo de computação, volume de dados, ou de chamadas de API.
Limites de uso de recursos
O Google oferece o Apps Script com alguns limitantes. Pra maior parte das necessidades, esses limites serão suficientes. Mas, por outras vezes, isso não é alcançável.
Existem quotas de utilização dos serviços, de tempo até a resposta para uma requisição e até outros limitantes mais específicos de cada produto, como quantidade de e-mails por dia, e etc. Para não ficar discorrendo sobre tantos limites, vamos falar das mensagens de erro que são devolvidas e a partir daí, tecer alguns comentários. Para todos os detalhes item a item, veja na documentação oficial, aqui
Limit exceeded: <Limit Message>
Isso indica que o script excedeu uma das cotas ou limitações. Onde se vê <Limit Message>
, será dada alguma mensagem que torna mais explícito qual limite foi atingido. Para saber quais limites são esses, veja aqui
Service invoked too many times: <ServiceName>
Isso indica que o script chamou o serviço muitas vezes em um dia.
Cada API de serviço do Google obedece a uma tabela com esses valores. Veja aqui
Service invoked too many times in a short time: Calendar. Try Utilities.sleep(1000) between calls.
Isso indica que o script chamou o serviço fornecido muitas vezes em um curto período. É simples de resolver, como a própria mensagem indica.
Em minha experiência, já tive de usar Utilities.sleep(), mas não dei 1seg de tempo, para não tornar meu script interminável. Reduzi pra 500 ms, e tive sucesso.
Provavelmente uma medida contra DDOS das APIs.
Service using too much computer time for one day.
Isso indica que o script excedeu o tempo total de execução permitido para um dia. Ele geralmente ocorre para scripts executados em um acionador, que tem um limite diário menor do que os scripts executados manualmente.
Script invoked too many times per second for this Google user account.
Isso indica que o script começou a ser executado muitas vezes em um curto período. Ele geralmente ocorre para funções personalizadas que são chamadas repetidamente em uma única planilha. Para evitar esse erro, codifique suas funções personalizadas para que elas só precisem ser chamadas uma vez por intervalo de dados, conforme explicado no guia para funções personalizadas.
Essa inclusive é uma boa regra de otimização da utilização dos recursos com suas funções personalizadas. Vale a pena seguir esse conselho aqui.
There are too many scripts running simultaneously for this Google user account.
Isso indica que você tem muitos scripts em execução ao mesmo tempo, mas não necessariamente o mesmo script. Como na exceção acima, isso ocorre com mais frequência para funções personalizadas que são chamadas repetidamente em uma única planilha.
Cuidado com várias planilhas rodando ao mesmo tempo e vários cliques nos gatilhos de acionamento das suas funções.