Menyisipkan, menghapus, dan memindahkan teks

Google Docs API memungkinkan Anda menyisipkan atau menghapus teks dalam dokumen. Pemindahan teks melibatkan kedua operasi tersebut, yang didahului dengan get konten.

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

Sisipkan teks

Untuk menyisipkan 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) serta 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 menambah semua indeks bernomor lebih tinggi berdasarkan ukuran teks yang disisipkan. Contoh tersebut menghitung sebelumnya hasil perubahan indeks ini sehingga penyertaan berikutnya terjadi pada offset baru yang dikoreksi. Dengan demikian, untuk menyisipkan pada offset target asli sebesar 25, 50, dan 75, indeks penyisipan sebenarnya adalah:

  • Penyisipan pertama menambahkan 10 karakter dengan 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, buat Range terlebih dahulu yang menentukan rentang teks yang akan dihapus. Lalu, 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()

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

Pindahkan teks

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