Bonnes pratiques pour obtenir de meilleurs résultats
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous devez respecter plusieurs principes lorsque vous utilisez l'API Google Docs.
Exemples :
Monter à l'envers pour plus d'efficacité
Planifier la collaboration
Assurer la cohérence de l'état à l'aide du champ WriteControl
Tenir compte des onglets
Les sections suivantes expliquent ces principes.
Monter à l'envers pour plus d'efficacité
Dans un seul appel à la méthode documents.batchUpdate, ordonnez vos requêtes par ordre décroissant de l'emplacement de l'index. Vous n'avez donc plus besoin de calculer les modifications d'index dues aux insertions et aux suppressions.
Planifier la collaboration
Attendez-vous à ce que l'état du document change. Entre deux appels de méthode, d'autres collaborateurs peuvent modifier le document, comme le montre le schéma suivant :
Cela peut entraîner des erreurs si vos index sont incorrects. Lorsque plusieurs utilisateurs modifient un document à l'aide de l'interface utilisateur, Google Docs s'en charge de manière transparente. Toutefois, en tant que client API, votre application doit gérer cela. Même si vous ne prévoyez pas de collaborer sur le document, il est important de programmer de manière défensive et de vous assurer que l'état du document reste cohérent. Pour garantir la cohérence, consultez la section WriteControl.
Établir la cohérence de l'état avec WriteControl
Lorsque vous lisez un document, puis le mettez à jour, vous pouvez contrôler la façon dont les modifications concurrentes sont gérées à l'aide du champ WriteControl dans la méthode documents.batchUpdate. WriteControl fournit l'autorité sur la façon dont les requêtes d'écriture sont exécutées.
Voici comment l'utiliser :
Obtenez le document à l'aide de la méthode documents.get et enregistrez le revisionId à partir de la ressource documents renvoyée.
Rédigez vos demandes de mise à jour.
Incluez un objet WriteControl facultatif avec l'une des deux options suivantes :
Le champ requiredRevisionId est défini sur le revisionId du document auquel la requête d'écriture est appliquée. Si le document a été modifié depuis la requête de lecture de l'API, la requête d'écriture n'est pas traitée et une erreur est renvoyée.
Le champ targetRevisionId est défini sur le revisionId du document auquel la requête d'écriture est appliquée. Si le document a été modifié depuis la demande de lecture de l'API, les modifications de la demande d'écriture sont appliquées aux modifications apportées par les collaborateurs. Le résultat de la requête d'écriture intègre les modifications de la requête d'écriture et celles du collaborateur dans une nouvelle révision du document. Le serveur Docs est responsable de la fusion du contenu.
Pour obtenir un exemple de création d'une requête par lot à l'aide de WriteControl, consultez cet exemple de requête par lot.
Tenir compte des onglets
Un même document peut contenir plusieurs onglets, qui nécessitent un traitement spécifique dans vos requêtes API.
Voici quelques points à retenir :
Définissez le paramètre includeTabsContent sur true dans la méthode documents.get pour récupérer le contenu de tous les onglets d'un document. Par défaut, le contenu de tous les onglets n'est pas renvoyé.
Spécifiez le ou les ID des onglets auxquels appliquer chaque Request dans la méthode documents.batchUpdate. Chaque Request inclut un moyen de spécifier les onglets auxquels appliquer la mise à jour. Par défaut, si aucun onglet n'est spécifié, Request est appliqué dans la plupart des cas au premier onglet du document. Pour en savoir plus, consultez la documentation de Request.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/29 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)"]]