Este documento mostra como agrupar chamadas de API para reduzir o número de conexões que seu cliente precisa fazer. A execução em lote pode melhorar a eficiência de um aplicativo, diminuindo as viagens de ida e volta de rede e aumentando a capacidade.
Visão geral
Cada conexão feita pelo cliente resulta em certa quantidade de sobrecarga. A API Google Sheets oferece suporte a operações em lote para que o cliente coloque vários objetos de solicitação, cada um especificando um único tipo de solicitação a ser realizado, em uma única solicitação em lote. Uma solicitação em lote pode melhorar a performance ao combinar várias subsolicitações em uma única chamada para o servidor, recuperando uma única resposta.
Recomendamos que os usuários sempre agrupem várias solicitações. Confira alguns exemplos de situações em que você pode usar as operações em lote:
- Você acabou de começar a usar a API e tem muitos dados para fazer upload.
- Você precisa atualizar metadados ou propriedades, como formatação, em vários objetos.
- Você precisa excluir muitos objetos.
Limites, autorização e considerações sobre dependência
Confira uma lista de outros itens a serem considerados ao usar a atualização em lote:
- Cada solicitação em lote, incluindo todas as subsolicitações, é contabilizada como uma solicitação de API para o limite de uso.
- Uma solicitação em lote é autenticada uma vez. Essa autenticação única é aplicada a todos os objetos de atualização em lote na solicitação.
- O servidor processa as subsolicitações na mesma ordem em que aparecem na solicitação em lote. As subsolicitações posteriores podem depender de ações realizadas durante subsolicitações anteriores. Por exemplo, na mesma solicitação em lote, os usuários podem inserir texto em um documento e estilizá-lo.
Detalhes do lote
Uma solicitação em lote consiste em uma chamada de método batchUpdate
com várias subsolicitações para, por exemplo, adicionar e formatar uma planilha.
Cada solicitação é validada antes de ser aplicada. Todas as subsolicitações na atualização em lote são aplicadas atomicamente. Ou seja, se uma solicitação não for válida, a atualização inteira vai falhar, e nenhuma das mudanças (potencialmente dependentes) será aplicada.
Algumas solicitações fornecem respostas com informações sobre as solicitações aplicadas. Por exemplo, todas as solicitações de atualização em lote para adicionar objetos retornam respostas para que você possa acessar os metadados do objeto recém-adicionado, como o ID ou título.
Com essa abordagem, é possível criar um documento do Google inteiro usando uma solicitação de atualização em lote da API com várias subsolicitações.
Formato de uma solicitação em lote
Uma solicitação é uma única solicitação JSON que contém várias
subsolicitações aninhadas com uma propriedade obrigatória: requests
. As
solicitações são construídas em uma matriz de solicitações individuais. Cada solicitação usa
JSON para representar o objeto de solicitação e conter as propriedades.
Formato de uma resposta em lote
O formato da resposta de uma solicitação em lote é semelhante ao formato da solicitação. A resposta do servidor contém uma resposta completa do único objeto de resposta.
A propriedade do objeto JSON principal é chamada replies
. As respostas
são retornadas em uma matriz, com cada resposta para uma das solicitações ocupando
a mesma ordem de índice da solicitação correspondente. Algumas solicitações não têm
respostas, e a resposta nesse índice de matriz está vazia.
Exemplo
O exemplo a seguir mostra o uso de lotes com a API Sheets.
Solicitação
Este exemplo de solicitação em lote demonstra como:
- Adicione uma planilha a uma planilha existente com um
sheetId
de 12345 usando oAddSheetRequest
. - Adicione dados à nova planilha, começando pela célula A1, usando o
UpdateCellsRequest
. - Adicione uma
namedRange
ou uma visualização de filtro à nova página.
Ao adicionar o ID da planilha na solicitação, os usuários podem usar o ID da planilha para outras subsolicitações na mesma chamada de API. Isso melhora o desempenho evitando um ciclo de gravação-leitura-gravação.
Para conferir uma lista de tipos de solicitações de atualização em lote agrupados em diferentes categorias, consulte a tabela em Operações de atualização em lote.
{ "requests":[ { "addSheet":{ "properties":{ "sheetId":123456 } } }, { "updateCells":{ "start":{ "sheetId":123456 }, "rows":[ { "values":[ { "userEnteredValue":{ "stringValue":"hello" } } ] }, { "values":[ { "userEnteredValue":{ "stringValue":"world" } } ] } ], "fields":"userEnteredValue" } }, { "addNamedRange":{ "namedRange":{ "name":"newRange", "range":{ "sheetId":123456, "endRowIndex":2 } } } } ] }
Resposta
Este exemplo de resposta em lote mostra informações sobre como cada subsolicitação na solicitação em lote foi aplicada. O UpdateCellsRequest
não contém uma resposta. Portanto, o valor do índice da matriz em [1] consiste em chaves roxas vazias.
"replies":[ { "addSheet":{ "properties":{ "sheetId":123456, "title":"Sheet3", "index":2, "sheetType":"GRID", "gridProperties":{ "rowCount":1000, "columnCount":26 } } } }, { }, { "addNamedRange":{ "namedRange":{ "namedRangeId":"2104325079", "name":"newRange", "range":{ "sheetId":123456, "startRowIndex":0, "endRowIndex":2, "startColumnIndex":0, "endColumnIndex":26 } } } } ]