Menyisipkan, menghapus, dan memindahkan teks

API Google Dokumen memungkinkan Anda menyisipkan atau menghapus teks dalam dokumen. Memindahkan teks memerlukan kedua operasi, yang diawali dengan get konten.

Anda dapat menyisipkan atau menghapus teks di segmen dokumen mana pun (isi, header, footer, atau catatan kaki).

Sisipkan teks

Untuk memasukkan teks ke dalam dokumen, gunakan metode documents.batchUpdate dan sertakan InsertTextRequest dengan teks dan lokasi sebagai payload.

Contoh kode berikut menunjukkan cara menyisipkan serangkaian string teks di lokasi indeks yang ditentukan dalam isi dokumen. Contoh ini menggunakan tiga offset target (25, 50, dan 75) dan menyisipkan string sepuluh karakter di setiap lokasi.

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()

Setiap penyisipan akan menambah semua indeks dengan nomor lebih tinggi sesuai ukuran teks yang disisipkan. Contoh ini menghitung hasil perubahan indeks ini di awal sehingga penyisipan berikutnya terjadi pada offset baru yang dikoreksi. Dengan demikian, untuk menyisipkan offset target asli 25, 50, dan 75, indeks penyisipan yang sebenarnya adalah:

  • Penyisipan pertama menambahkan 10 karakter pada offset 25.
  • Penyisipan kedua menambahkan 10 karakter pada offset 50 + 10=60.
  • Penyisipan ketiga menambahkan 10 karakter pada offset 75 + 10 + 10=95.

Menghapus teks

Untuk menghapus teks dari dokumen, pertama-tama buat Range yang menentukan rentang teks yang akan dihapus. Kemudian, gunakan metode documents.batchUpdate dan sertakan DeleteContentRangeRequest.

Contoh kode berikut menunjukkan cara menghapus teks antara indeks 10 dan indeks 24 dalam isi dokumen.

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()

Sederhanakan masalah dengan menulis mundur. Seperti halnya penyisipan, menghapus teks akan mengubah indeks semua teks "di bawah" dalam segmen. Sekali lagi, menulis ulang dapat menyederhanakan penanganan indeks Anda.

Pindahkan teks

Untuk memindahkan teks, Anda harus menghapusnya di satu lokasi, lalu memasukkannya di tempat lain. Menghapus konten tidak memberi Anda salinannya (tidak ada konsep yang setara dengan papan klip) sehingga Anda harus mengekstrak isi rentang terlebih dahulu sehingga dapat digunakan dalam permintaan teks penyisipan.