Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Há vários princípios que você precisa seguir ao usar a API Google Docs.
São eles:
Edite de trás para frente para aumentar a eficiência
Planejar a colaboração
Garantir a consistência de estado usando o campo
WriteControl
Considerar as guias
As seções a seguir explicam esses princípios.
Edite de trás para frente para aumentar a eficiência
Em uma única chamada ao método
documents.batchUpdate, ordene suas solicitações em
ordem decrescente de localização do índice. Isso elimina a necessidade de calcular as mudanças de índice devido a inserções e exclusões.
Planejar a colaboração
O estado do documento vai mudar. Entre uma chamada de método e outra, outros colaboradores podem atualizar o documento, como mostrado no diagrama a seguir:
Isso pode causar erros se os índices estiverem incorretos. Com vários usuários editando um documento usando a interface, o Google Docs cuida disso de forma transparente. No entanto,
como um cliente de API, seu app precisa gerenciar isso. Mesmo que você não preveja
colaboração no documento, é importante programar de forma defensiva e garantir
que o estado do documento permaneça consistente. Para garantir a consistência, consulte a seção WriteControl.
Estabelecer a consistência de estado com WriteControl
Ao ler e atualizar um documento, você pode controlar o comportamento de como
as mudanças conflitantes são processadas usando o campo
WriteControl
no método documents.batchUpdate. O WriteControl fornece autoridade sobre como as solicitações de gravação são executadas.
Veja como usar:
Receba o documento usando o método
documents.get
e salve o
revisionId
do recurso documents retornado.
Crie suas solicitações de atualização.
Inclua um objeto WriteControl opcional com uma das duas opções:
O campo requiredRevisionId é definido como o revisionId do
documento em que a solicitação de gravação é aplicada. Se o documento tiver sido modificado
desde a solicitação de leitura da API, a solicitação de gravação não será processada e
vai retornar um erro.
O campo targetRevisionId é definido como o revisionId do documento
a que a solicitação de gravação é aplicada. Se o documento tiver sido modificado desde a
solicitação de leitura da API, as mudanças da solicitação de gravação serão aplicadas às
mudanças do colaborador. O resultado da solicitação de gravação incorpora as mudanças da solicitação e as do colaborador em uma nova revisão do documento. O servidor do Google Docs é responsável
por mesclar o conteúdo.
Para um exemplo de como criar uma solicitação em lote usando WriteControl, consulte
este exemplo de solicitação em lote.
Considerar as guias
Um único documento pode conter várias guias, que exigem um tratamento específico nas solicitações de API.
Lembre-se do seguinte:
Defina o parâmetro includeTabsContent como true no método
documents.get
para recuperar o conteúdo de todas as guias de um documento. Por padrão, nem todo o conteúdo das guias é retornado.
Especifique os IDs das guias em que cada Request
será aplicado no método
documents.batchUpdate. Cada
Request
inclui uma maneira de especificar as guias em que a atualização será aplicada. Por padrão, se uma guia não for especificada, o Request será aplicado à primeira guia do documento na maioria dos casos. Consulte a documentação do
Requests
para mais detalhes.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-29 UTC."],[],[],null,["# Best practices for best results\n\nThere are several principles you should follow when using the Google Docs API.\nThese include:\n\n- Edit backwards for efficiency\n- Plan for collaboration\n- Ensure state consistency using the [`WriteControl`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate#writecontrol) field\n- Take tabs into account\n\nThe following sections explain these principles.\n\nEdit backwards for efficiency\n-----------------------------\n\nWithin a single call to the\n[`documents.batchUpdate`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate)\nmethod, order your requests in\n*descending order* of index location. This eliminates the need to compute the\nindex changes due to insertions and deletions.\n\nPlan for collaboration\n----------------------\n\nExpect the document state to change. Between one method call and another, other\ncollaborators might update the document, as shown in the following diagram:\n\nThis can lead to errors if your indexes are wrong. With multiple users editing a\ndocument using the UI, Google Docs takes care of this transparently. However,\nas an API client your app must manage this. Even if you don't anticipate\ncollaboration on the document, it's important to program defensively and make\nsure the document state remains consistent. For one way to ensure consistency,\nreview the [`WriteControl`](#establish-state-consistency) section.\n\nEstablish state consistency with WriteControl\n---------------------------------------------\n\nWhen you read and then update a document, you can control the behavior of how\ncompeting changes are handled using the\n[`WriteControl`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate#writecontrol)\nfield in the `documents.batchUpdate` method. `WriteControl` provides authority\nover how write requests are executed.\n\nHere's how you use it:\n\n1. Get the document using the [`documents.get`](/workspace/docs/api/reference/rest/v1/documents/get) method and save the [`revisionId`](/workspace/docs/api/reference/rest/v1/documents#Document.FIELDS.revision_id) from the returned `documents` resource.\n2. Compose your update requests.\n3. Include an optional [`WriteControl`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate#writecontrol) object with one of two options:\n 1. The `requiredRevisionId` field is set to the `revisionId` of the document the write request is applied to. If the document was modified since the API read request, the write request isn't processed and it returns an error.\n 2. The `targetRevisionId` field is set to the `revisionId` of the document the write request is applied to. If the document was modified since the API read request, the write request changes are applied against the collaborator changes. The result of the write request incorporates both the write request changes and the collaborator changes into a new revision of the document. The Docs server is responsible for merging the content.\n\nFor an example of how to construct a batch request using `WriteControl`, see\nthis [batch request example](/workspace/docs/api/how-tos/batch#example).\n\nTake tabs into account\n----------------------\n\nA single document can contain multiple [tabs](/workspace/docs/api/how-tos/tabs),\nwhich require specific handling in your API requests.\n\nHere's what to remember:\n\n1. Set the `includeTabsContent` parameter to `true` in the [`documents.get`](/workspace/docs/api/reference/rest/v1/documents/get) method to retrieve the content from all tabs in a document. By default, not all tab contents are returned.\n2. Specify the ID(s) of the tab(s) to apply each [`Request`](/workspace/docs/api/reference/rest/v1/documents/request#request) to in the [`documents.batchUpdate`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate) method. Each [`Request`](/workspace/docs/api/reference/rest/v1/documents/request#request) includes a way to specify the tabs to apply the update to. By default, if a tab is not specified, the [`Request`](/workspace/docs/api/reference/rest/v1/documents/request#request) will in most cases be applied to the first tab in the document. Refer to the [`Request`](/workspace/docs/api/reference/rest/v1/documents/request#request)s documentation for specifics.\n\nRelated topics\n--------------\n\n- [Batch requests](/workspace/docs/api/how-tos/batch)\n- [Requests and responses](/workspace/docs/api/concepts/request-response)\n- [Work with tabs](/workspace/docs/api/how-tos/tabs)"]]