Dá para manter uma planilha do Google sempre igual ao seu cadastro de clientes e de serviços com uma chave de API e um script de cerca de 20 linhas. Sem exportar arquivo, sem copiar e colar, e sem o risco de a planilha ficar com o telefone antigo de alguém.

Muito MEI já tem uma planilha: lista de clientes para mandar mensagem no fim do ano, tabela de preços para consulta, controle de serviços do mês. Tirar isso da planilha é trabalhoso e nem sempre necessário. O que faz sentido é ligar as duas coisas. Este texto mostra como.

O que a API do Sysbee já entrega

A API do Sysbee é a mesma que o próprio painel usa. Isso significa que o que você vê na tela está disponível para outras ferramentas, dentro das permissões que você der. Hoje, com a chave certa, você consulta:

  • Clientes (contacts:read), com nome, e-mail, telefone e a empresa ligada a cada pessoa.
  • Empresas dos clientes (companies:read).
  • Itens do catálogo (items:read), com nome, tipo, unidade e preço em centavos.

As chaves hoje só leem. Nenhuma ferramenta conectada consegue alterar ou apagar nada, o que torna seguro testar. A leitura de propostas e os avisos automáticos (webhooks) estão a caminho, e falamos deles no fim.

Passo 1: criar a chave

No painel, abra Configurações > Integrações e crie uma chave. Dê um nome que diga para que ela serve (por exemplo, "Planilha de clientes") e marque só os escopos necessários. A chave começa com pk_live_ e aparece inteira uma única vez, então copie na hora. O Sysbee guarda apenas uma impressão digital dela, e não consegue mostrá-la de novo.

Se a chave vazar ou o prestador de serviço que montou a planilha sair, revogue na mesma tela. Ela deixa de funcionar na hora.

Passo 2: testar com uma chamada

Antes de montar qualquer coisa, confirme que a chave funciona:

curl "https://app.sysbee.com.br/api/v1/contacts?per_page=100" \
  -H "Authorization: Bearer pk_live_SUA_CHAVE"

A resposta é um JSON com os clientes da sua empresa, sempre os seus e de mais ninguém:

{
  "data": [
    {
      "id": 42,
      "name": "Ana Souza",
      "email": "ana@exemplo.com.br",
      "phone": "11999990000",
      "company_id": 7,
      "company_name": "Padaria Estrela",
      "created_at": "2026-10-01T14:03:22Z"
    }
  ],
  "meta": { "page": 1, "per_page": 100, "total": 1, "pages": 1 }
}

A lista vem paginada, com até 100 registros por página. O bloco meta diz quantas páginas existem, e é com ele que o script do próximo passo sabe quando parar.

Passo 3: o script na planilha

No Google Planilhas, abra Extensões > Apps Script e cole o código abaixo. Guarde a chave em Configurações do projeto > Propriedades do script, com o nome SYSBEE_KEY, em vez de escrevê-la no código. Assim, se você compartilhar a planilha, a chave não vai junto.

const CHAVE = PropertiesService.getScriptProperties().getProperty('SYSBEE_KEY')
const API = 'https://app.sysbee.com.br/api/v1'

function buscarTudo(recurso) {
  const linhas = []
  let pagina = 1
  let paginas = 1
  do {
    const resposta = UrlFetchApp.fetch(`${API}/${recurso}?per_page=100&page=${pagina}`, {
      headers: { Authorization: 'Bearer ' + CHAVE },
    })
    const corpo = JSON.parse(resposta.getContentText())
    linhas.push(...corpo.data)
    paginas = corpo.meta.pages
    pagina += 1
  } while (pagina <= paginas)
  return linhas
}

function sincronizarClientes() {
  const aba = SpreadsheetApp.getActive().getSheetByName('Clientes')
  const clientes = buscarTudo('contacts')
  aba.clearContents()
  aba.appendRow(['Nome', 'Empresa', 'E-mail', 'Telefone'])
  clientes.forEach((c) => aba.appendRow([c.name, c.company_name, c.email, c.phone]))
}

Crie uma aba chamada Clientes, execute sincronizarClientes uma vez para autorizar o acesso e pronto. Para atualizar sozinho, use Acionadores e agende a função a cada hora, ou todo dia de manhã.

O mesmo desenho serve para os itens: troque contacts por items e ajuste as colunas. Lembre que o preço vem em centavos de real, então 15000 é R$ 150,00. Divida por 100 antes de mostrar.

Limites e cuidados

  • 60 requisições por minuto por chave. Para uma planilha sobra. Cada resposta traz os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset, e passar do limite devolve o status 429.
  • Dados pessoais. Telefone e e-mail de clientes são dados pessoais. Se a planilha for compartilhada, restrinja quem pode abrir e não deixe cópias soltas.
  • Uma chave por ferramenta. Se cada integração tiver a sua, dá para revogar uma sem derrubar as outras, e a lista de chamadas recentes mostra quem usou o quê.
  • Compatibilidade. Tudo fica em /api/v1. Dentro dessa versão, campos não são removidos nem renomeados, só acrescentados, então o script não quebra de um dia para o outro.

O que vem a seguir

Planilha é só o exemplo mais simples. A mesma chave serve para um script seu, para Make, Zapier ou n8n (qualquer um que chame uma URL com um cabeçalho), para um painel de gestão ou para o sistema do seu contador.

O próximo passo é a conversa na outra direção: em vez de a ferramenta perguntar, o Sysbee avisa. Os webhooks vão mandar um aviso assinado para o endereço que você escolher quando uma proposta for enviada, aberta, aceita, recusada ou vencer. Com isso, um aceite poderá virar uma linha na planilha, uma mensagem para a equipe ou uma ordem de serviço, sem ninguém digitar. Quando chegar, o texto avisando estará aqui no blog.

A documentação completa, com todos os campos e exemplos, fica na página de API do painel.