Nó `appendOrUpdate` do Google Sheets escreve fora dos limites da Tabela nativa

Oi pessoal,

Estou enfrentando um problema com o nó Google Sheets (n8n-nodes-base.googleSheets, typeVersion 4.5), onde linhas anexadas via operações appendOrUpdate estão sendo escritas fora do limite de uma Tabela nativa do Google Sheets, em vez de serem inseridas na próxima linha disponível dentro da Tabela.

A planilha de destino usa o recurso nativo de Tabelas do Google Sheets (Inserir → Tabela). A Tabela abrange aproximadamente A1:N7, com a linha 1 como linha de cabeçalho e linhas 2–7 contendo espaços reservados de coluna tipada (data, moeda, chip de pessoa). A Tabela é chamada “Invoices”.

Comportamento esperado vs. real

Quando uma nova linha é enviada para o nó, ela deve ser inserida dentro do limite da Tabela, preenchendo a próxima linha vazia da Tabela ou estendendo a Tabela para acomodar o novo registro, de modo que a linha herde os tipos de coluna, formatação e referências estruturadas da Tabela. Em vez disso, a linha é escrita na primeira linha vazia imediatamente abaixo do intervalo de dados atual da Tabela, fora do limite da Tabela; ela não se torna parte da Tabela e não herda seus tipos de coluna ou formatação. Isso acontece independentemente de a Tabela conter linhas de espaço reservado vazias ou apenas linhas preenchidas.

Anexei uma captura de tela da planilha de destino mostrando o problema e fico feliz em compartilhar uma exportação sanitizada do fluxo de trabalho se isso puder ajudar. Obrigado por verificar.

1 curtida

Sim, parece que o n8n está tratando a planilha como um intervalo normal, não como o recurso Tables nativo mais recente do Google.

Eu testaria com uma linha em branco já dentro da tabela e também tentaria definir o intervalo para a área da tabela.

Se continuar anexando abaixo da tabela, eu trataria como uma limitação/bug do nó Sheets e usaria um workaround de intervalo normal ou acessaria a API do Sheets diretamente.

1 curtida

Bem-vindo @ernest28 à nossa comunidade! Sou Jay e sou um criador verificado da n8n.

Esta é uma limitação conhecida - o nó Google Sheets da n8n chama a API Sheets v4 no nível spreadsheets.values, que não tem consciência das Tabelas nativas do Google Sheets. O recurso Tables fica sobre intervalos de planilha regulares, mas a API não o expõe da mesma forma, então anexar uma linha apenas encontra a próxima linha vazia no intervalo sem “inserir” uma linha no objeto Table. O único contorno real no momento é evitar usar Tables nativas como destino - use um intervalo regular em vez disso e aplique formatação manualmente, ou use o nó Sheets API com uma chamada batchUpdate direta se você precisar que a linha se registre dentro da estrutura da Table.

1 curtida

@ernest28 confirmando o que @OMGItsDerek + @nguyenthieutoan disseram — o endpoint values.append da Sheets API que o n8n chama não tem conceito nativo de Tables, então a linha fica fora do limite por design. a solução alternativa quando você ainda quer inserts conscientes de Table é chamar spreadsheets.batchUpdate diretamente via HTTP Request com uma requisição insertRange que estende explicitamente a Table.

aqui está o JSON do nó HTTP Request para a solução alternativa:

insertRange move as células existentes para baixo + estende o objeto Table, depois updateCells escreve sua linha na linha recém-criada DENTRO do limite. tipos de coluna + formatação são herdados da definição da Table. ajuste startRowIndex/endRowIndex para onde a Table termina atualmente (ou consulte primeiro com spreadsheets.get + includeGridData=false para encontrar o limite ativo).

1 curtida