Serviços avançados do Google

Com os serviços avançados do Apps Script, é possível se conectar a algumas APIs públicas do Google com menos configuração do que usando as interfaces HTTP. Os serviços avançados são wrappers simples dessas APIs do Google. Eles funcionam de maneira muito parecida com os serviços integrados do Apps Script. Por exemplo, oferecem preenchimento automático, e o Apps Script processa o fluxo de autorização automaticamente. No entanto, é preciso ativar um serviço avançado antes de usá-lo em um script.

Ativar serviços avançados

Para usar um Serviço avançado do Google, siga estas instruções:

Etapa 1: ativar o serviço avançado

É possível ativar um serviço avançado usando o editor do Apps Script ou editando o manifesto.

Método A: usar o editor

  1. Abra o projeto do Apps Script.
  2. À esquerda, clique em Editor .
  3. À esquerda, ao lado de Serviços, clique em Adicionar um serviço .
  4. Selecione um serviço avançado do Google e clique em Adicionar.

Método B: usar o manifesto

Para ativar serviços avançados, edite o arquivo de manifesto. Por exemplo, para ativar o serviço avançado do Google Drive, adicione o campo enabledAdvancedServices ao objeto dependencies:

{
  "timeZone": "America/Denver",
  "dependencies": {
    "enabledAdvancedServices": [
      {
        "userSymbol": "Drive",
        "version": "v3",
        "serviceId": "drive"
      }
    ]
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

Depois de ativar um serviço avançado, ele fica disponível no preenchimento automático.

Etapa 2: ativar a API do Google Cloud (somente projetos padrão do Google Cloud)

Se você estiver usando um projeto padrão do Google Cloud (criado automaticamente pelo Apps Script), pule esta etapa. A API é ativada automaticamente quando você adiciona o serviço na etapa 1.

Se você estiver usando um projeto padrão do Google Cloud, também precisará ativar manualmente a API correspondente ao serviço avançado. Para ativar a API manualmente:

  1. Abra o projeto do Cloud associado ao script no **console do Google Cloud**.

  2. Na parte de cima do console, clique na barra de pesquisa e digite parte do nome da API (por exemplo, "Agenda"). Em seguida, clique no nome quando ele aparecer.

  3. Clique em Ativar API.

  4. Feche o console do Google Cloud e volte ao editor de script.

Como as assinaturas de método são determinadas

Os serviços avançados geralmente usam os mesmos objetos, nomes de métodos e parâmetros das APIs públicas correspondentes, embora as assinaturas de métodos sejam traduzidas para uso no Apps Script. A função de preenchimento automático do editor de script geralmente fornece informações suficientes para começar, mas as regras a seguir explicam como o Apps Script gera uma assinatura de método de uma API pública do Google.

As solicitações para APIs do Google podem aceitar vários tipos diferentes de dados, incluindo parâmetros de caminho, parâmetros de consulta, um corpo de solicitação ou um anexo de upload de mídia. Alguns serviços avançados também podem aceitar cabeçalhos de solicitação HTTP específicos, como o serviço avançado da Agenda.

A assinatura do método correspondente no Google Apps Script tem os seguintes argumentos:

  1. O corpo da solicitação (geralmente um recurso), como um objeto JavaScript.
  2. Caminho ou parâmetros obrigatórios, como argumentos individuais. Se o método exigir vários parâmetros de caminho, eles vão aparecer na ordem em que são listados no URL do endpoint da API.
  3. O anexo de upload de mídia, como um argumento Blob.
  4. Parâmetros opcionais (normalmente parâmetros de consulta) como um objeto JavaScript que mapeia nomes de parâmetros para valores.
  5. Cabeçalhos de solicitação HTTP como um objeto JavaScript que mapeia nomes de cabeçalho para valores de cabeçalho.

Se o método não tiver itens em uma determinada categoria, essa parte da assinatura será omitida.

Há algumas exceções especiais:

  • Para métodos que aceitam um upload de mídia, o parâmetro uploadType é definido automaticamente.
  • Os métodos chamados delete na API Google são chamados de remove no Apps Script, já que delete é uma palavra reservada em JavaScript.
  • Se um serviço avançado estiver configurado para aceitar cabeçalhos de solicitação HTTP e você definir um objeto JavaScript de cabeçalhos de solicitação, também será necessário definir o objeto JavaScript de parâmetros opcionais (como um objeto vazio se você não estiver usando parâmetros opcionais).

Exemplo: Calendar.Events.insert

Suponha que você queira criar um evento da Agenda. A documentação da API Google Calendar mostra a estrutura da solicitação HTTP correspondente:

  • Verbo HTTP: POST
  • URL da solicitação: https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events
  • Corpo da solicitação: um recurso Event.

  • Parâmetros de consulta: sendUpdates, supportsAttachments etc.

No Apps Script, a assinatura do método é determinada pela reordenação destas entradas:

  1. Corpo: o recurso de evento (objeto JavaScript).
  2. Caminho: o calendarId (string).
  3. Parâmetros opcionais: os parâmetros de consulta (objeto JavaScript).

A chamada de método resultante fica assim:

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: {
    dateTime: '2026-01-01T12:00:00-05:00'
  },
  end: {
    dateTime: '2026-01-01T13:00:00-05:00'
  }
};
const calendarId = 'primary';
const optionalArgs = {
  sendUpdates: 'all'
};

Calendar.Events.insert(event, calendarId, optionalArgs);

Serviços avançados ou HTTP?

Cada um dos serviços avançados do Google está associado a uma API pública do Google. No Apps Script, é possível acessar essas APIs usando serviços avançados ou fazendo as solicitações de API diretamente com UrlFetch.

Se você usar o método de serviço avançado, o Apps Script vai processar o fluxo de autorização e oferecer suporte ao preenchimento automático. No entanto, é preciso ativar o serviço avançado antes de usá-lo.

Se você usar o método UrlFetch para acessar a API diretamente, estará tratando a API do Google como uma API externa. Com esse método, todos os aspectos da API podem ser usados. No entanto, é necessário processar a autorização da API.

A tabela a seguir compara os dois métodos:

Recurso Serviço avançado UrlFetch (HTTP)
Autorização Processado automaticamente É necessário manuseio manual
Preenchimento automático Disponível Indisponível
Escopo da funcionalidade Pode ser um subconjunto da API Acesso total a todos os recursos da API
Complexidade Mais fácil Mais complexo (requer a criação de cabeçalhos e a análise de respostas)

Comparação de código

Os exemplos de código mostram a diferença de complexidade entre criar um evento do Google Agenda usando o serviço avançado e usando UrlFetchApp.

Serviço avançado:

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: { dateTime: '2026-01-01T12:00:00-05:00' },
  end: { dateTime: '2026-01-01T13:00:00-05:00' }
};

const optionalArgs = {
  sendUpdates: 'all'
};

Calendar.Events.insert(event, 'primary', optionalArgs);

UrlFetch (HTTP):

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: { dateTime: '2026-01-01T12:00:00-05:00' },
  end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events?sendUpdates=all';
const options = {
  method: 'post',
  contentType: 'application/json',
  headers: {
    Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
  },
  payload: JSON.stringify(event)
};

UrlFetchApp.fetch(url, options);

Recomendamos usar um serviço avançado sempre que possível e usar o método UrlFetch somente quando o serviço avançado não estiver disponível ou não fornecer a funcionalidade necessária.

Suporte para serviços avançados

Como os serviços avançados são wrappers simples das APIs do Google, qualquer problema encontrado ao usá-los geralmente é um problema com a API subjacente, não com o Apps Script.

Se você encontrar um problema ao usar um serviço avançado, ele deverá ser denunciado usando as instruções de suporte da API subjacente.