Automatizar o Google Sheets e o Gmail com Google Apps Script

Gere um script Google Apps Script pronto a colar: lê a sua folha, envia emails ou cria eventos, corre com um acionador, evita duplicados e inclui modo de teste e instruções de instalação. Pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Inclui 4 variáveis personalizáveis e pode copiá-lo gratuitamente com um clique.

Intermédio · Código · Pendente de revisão editorial

Prompt

Atua como programador especialista em Google Apps Script e Google Workspace que escreve automatizações robustas para equipas não técnicas.

Contexto:
- O que quero automatizar: {{tarefa}}
- Estrutura da folha (nome do separador e colunas com uma linha de exemplo): {{folha}}
- Quando deve correr: {{acionador}}
- Serviços envolvidos (Gmail, Calendar, Drive, Docs, Forms): {{servicos}}

Entregáveis:
1. Resumo do fluxo em 4 a 6 passos e os pressupostos que fazes sobre os dados.
2. Código Apps Script completo (JavaScript V8) com:
   - Um bloco CONFIG no início (nome do separador, colunas, remetente, assunto) para alterar sem mexer na lógica.
   - Leitura em bloco com getValues() e escrita em bloco, não célula a célula.
   - Uma coluna de estado para marcar as linhas processadas e evitar envios duplicados se o script correr duas vezes.
   - Um modo de teste (DRY_RUN) que registe o que faria sem enviar nada.
   - Tratamento de erros por linha, registo com console.log e um resumo no fim.
   - LockService se houver risco de execuções simultâneas.
3. Uma função que crie o acionador por código e a alternativa manual a partir do painel de acionadores.
4. Instalação passo a passo: Extensões > Apps Script, colar, guardar, autorizar permissões (explica que permissões vai pedir e porquê).
5. Limites a ter em conta: quotas diárias de envio e tempo máximo de execução conforme o tipo de conta; escreve [VERIFICAR na documentação de quotas da Google] em vez de números exatos.
6. Plano de testes com 3 linhas de exemplo, incluindo uma com dados vazios ou errados.

Restrições:
- Sem bibliotecas externas nem serviços pagos.
- Nunca peças nem guardes palavras-passe no código.
- Se a estrutura da folha não estiver clara, pergunta-me antes de escrever o código.

Formato: secções numeradas, o código num único bloco e comentários em português.

Como utilizar

Descreve as colunas com uma linha real (sem dados pessoais). Corre primeiro o script com DRY_RUN ativo, revê o registo e só depois desativa-o e cria o acionador.

Exemplo de utilização

Tarefa: lembrete por email 3 dias antes do vencimento de cada fatura · Folha: separador «Faturas» com cliente, email, valor em euros, data de vencimento, estado · Acionador: diário às 8h00 · Serviços: Gmail.

Exemplo de resultado

2. Código (Apps Script, V8)

const CONFIG = {
  SHEET_NAME: 'Inscrições',
  STATUS_COL: 5,            // A=nome, B=email, C=curso, D=data de início, E=estado
  SUBJECT: 'Bem-vindo ao teu curso',
  DRY_RUN: true,            // set to false once the test run looks right
};

function sendWelcomeEmails() {
  const lock = LockService.getScriptLock();
  if (!lock.tryLock(30 * 1000)) return;           // another run is in progress
  try {
    const sheet = SpreadsheetApp.getActive().getSheetByName(CONFIG.SHEET_NAME);
    const lastRow = sheet.getLastRow();
    if (lastRow < 2) return;
    const rows = sheet.getRange(2, 1, lastRow - 1, CONFIG.STATUS_COL).getValues();
    let sent = 0;
    const statuses = rows.map(([name, email, course, start, status], i) => {
      if (status) return [status];                // already processed: skip
      try {
        if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) throw new Error('invalid email');
        const date = Utilities.formatDate(new Date(start), Session.getScriptTimeZone(), 'dd/MM/yyyy');
        const body = `Olá ${name},\n\nbem-vindo ao curso «${course}». Começamos a ${date}.`;
        if (CONFIG.DRY_RUN) { console.log(`[DRY_RUN] would email ${email}`); return ['']; }
        GmailApp.sendEmail(email, CONFIG.SUBJECT, body);
        sent++;
        return ['ENVIADO ' + new Date().toISOString()];
      } catch (e) {
        console.log(`Row ${i + 2}: ${e.message}`);
        return ['ERRO: ' + e.message];
      }
    });
    sheet.getRange(2, CONFIG.STATUS_COL, statuses.length, 1).setValues(statuses); // one bulk write
    console.log(`Done: ${sent} sent out of ${rows.length} rows`);
  } finally {
    lock.releaseLock();
  }
}

function createTrigger() {
  ScriptApp.newTrigger('sendWelcomeEmails')
    .forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create();
}

A coluna de estado evita envios repetidos se o script correr duas vezes. O convite do Google Calendar entra no mesmo ciclo quando o calendário do curso estiver confirmado → [COMPLETAR]…

Dados-chave

Categoria
Programação e desenvolvimento · Automatizações
Tipo de resultado
Código
Nível
Intermédio
Pensado para
ChatGPT, Claude, Gemini e Microsoft Copilot
Verificado em
Pendente de verificação editorial
Variáveis
O que automatizar, Estrutura da folha, Acionador e Serviços envolvidos
Idioma
Português
Preço
Gratuito, sem registo
Atualizado
07/11/2026

Perguntas frequentes

Preciso de saber programar para usar o script?

Pouco: basta colar o código, ajustar o bloco CONFIG e autorizar as permissões. Ainda assim, testa-o numa cópia da folha antes de o usar com dados reais.

Porque é que o script pede tantas permissões?

O Apps Script pede acesso a cada serviço que o código usa, como o Gmail ou o Calendar. Revê a lista: se pedir algo de que o script não precisa, o código pode ser ajustado para limitar as permissões.

Para que serve este prompt?

Gere um script Google Apps Script pronto a colar: lê a sua folha, envia emails ou cria eventos, corre com um acionador, evita duplicados e inclui modo de teste e instruções de instalação.

Com que ferramentas de IA funciona?

Foi pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Ainda não o verificámos nestas ferramentas, pelo que os resultados podem variar entre elas.

Como personalizo o prompt?

Clique em “Personalizar” e preencha as variáveis (O que automatizar, Estrutura da folha, Acionador e Serviços envolvidos). O texto atualiza-se instantaneamente e pode depois copiá-lo com um clique. Os valores ficam guardados apenas no seu navegador.

Preciso de experiência para o utilizar?

É de nível intermédio: convém conhecer o tema para fornecer bom contexto e rever o resultado com sentido crítico.

Este prompt é gratuito?

Sim. Todos os prompts do HomeCasa Prompts são gratuitos, sem registo nem subscrição. Pode também utilizá-los em projetos profissionais.

Posso confiar no resultado da IA?

Trate-o como um rascunho de qualidade: verifique sempre os dados, os números e as afirmações importantes antes de publicar ou tomar decisões.

Prompts relacionados