Insérer, supprimer et déplacer du texte

L'API Google Docs vous permet d'insérer ou de supprimer du texte dans un document. Le déplacement de texte implique les deux opérations, précédées d'un élément get du contenu.

Vous pouvez insérer ou supprimer du texte dans n'importe quel segment d'un document (en-tête, pied de page, notes de bas de page ou corps).

Insérer du texte

Pour insérer du texte dans un document, utilisez la méthode BatchUpdate et incluez une requête InsertTextRequest avec le texte et l'emplacement en tant que charge utile.

L'exemple suivant montre comment insérer une série de chaînes de texte à des emplacements d'index spécifiés dans le corps d'un document. L'exemple choisit trois décalages cibles (25, 50 et 75) et insère une chaîne de 10 caractères à chaque emplacement.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text1)
                .setLocation(new Location().setIndex(25))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text2)
                .setLocation(new Location().setIndex(50))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text3)
                .setLocation(new Location().setIndex(75))));

        BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
        BatchUpdateDocumentResponse response = docsService.documents()
                .batchUpdate(DOCUMENT_ID, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
         {
            'insertText': {
                'location': {
                    'index': 25,
                },
                'text': text1
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 50,
                },
                'text': text2
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 75,
                },
                'text': text3
            }
        },
    ]

    result = service.documents().batchUpdate(
        documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Chaque insertion incrémente tous les index dont le numéro est le plus élevé en fonction de la taille du texte inséré. L'exemple précalcule le résultat de ces modifications d'index de sorte que les insertions suivantes aient lieu au nouveau décalage corrigé. Ainsi, pour insérer aux décalages cibles d'origine de 25, 50 et 75, les index d'insertion réels sont les suivants:

  • La première insertion ajoute 10 caractères au début du décalage de 25.
  • La deuxième insertion ajoute 10 caractères avec un décalage de 50+10=60.
  • La troisième insertion ajoute 10 caractères au décalage 75+10+10=95.

Suppression du texte

Pour supprimer du texte d'un document, commencez par construire une Range qui définit la plage de texte à supprimer. Utilisez ensuite la méthode BatchUpdate et incluez une requête DeleteContentRangeRequest.

L'exemple suivant montre comment supprimer le texte situé entre les index 10 et 24 dans le corps d'un document.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setDeleteContentRange(
                new DeleteContentRangeRequest()
                        .setRange(new Range()
                                .setStartIndex(10)
                                .setEndIndex(24))
            ));

        BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
        BatchUpdateDocumentResponse response = docsService.documents()
                .batchUpdate(DOCUMENT_ID, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'deleteContentRange' => array(
        'range' => array(
            'startIndex' => 10,
            'endIndex' => 24
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
        {
            'deleteContentRange': {
                'range': {
                    'startIndex': 10,
                    'endIndex': 24,
                }

            }

        },
    ]
    result = service.documents().batchUpdate(
        documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Simplifiez les choses en écrivant à l'envers. Comme pour les insertions, la suppression de texte modifie les index de tout le texte "en dessous" dans le segment. Là encore, l'écriture inversée peut simplifier le traitement des index.

Déplacement du texte...

Pour déplacer du texte, vous devez le supprimer à un emplacement, puis l'insérer à un autre emplacement. Toutefois, la suppression de contenu ne vous procure pas de copie (il n'existe pas de concept équivalent au presse-papiers, par exemple). Vous devez donc extraire le contenu de la plage pour l'utiliser dans votre requête d'insertion.