Menyisipkan, menghapus, dan memindahkan teks

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

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

Sisipkan teks

Untuk menyisipkan teks ke dalam dokumen, gunakan documents.batchUpdate dan menyertakan InsertTextRequest dengan teks dan lokasi sebagai payload.

Contoh kode berikut menunjukkan cara menyisipkan serangkaian {i>string<i} teks di lokasi indeks tertentu dalam isi dokumen. Contoh ini menggunakan tiga target offset (25, 50, dan 75) dan memasukkan string sepuluh karakter lokasi HTTP/HTTPS.

Java

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

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

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

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,
            'tabId' => TAB_ID,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
            'tabId' => TAB_ID,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
            'tabId' => TAB_ID,
        ),
    ),
));

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

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

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 25,
                'tabId': TAB_ID
            },
            'text': text1
        }
    },
                {
        'insertText': {
            'location': {
                'index': 50,
                'tabId': TAB_ID
            },
            'text': text2
        }
    },
                {
        'insertText': {
            'location': {
                'index': 75,
                'tabId': TAB_ID
            },
            '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 bahwa penyisipan berikutnya terjadi pada offset baru yang dikoreksi. Untuk menyisipkan pada offset target asli 25, 50, dan 75, indeks penyisipan aktual 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.

Hapus teks

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

Contoh kode berikut menunjukkan cara menghapus teks di antara indeks 10 dan indeks 24 dalam {i> body<i} dokumen.

Java

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

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,
            'tabId' => TAB_ID
        ),
    ),
));

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

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

Python

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

        }

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

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

Pindahkan teks

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