Menyisipkan, menghapus, dan memindahkan teks

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

Anda dapat menyisipkan atau menghapus teks di segmen tab dokumen (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) 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).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 akan menambah semua indeks bernomor lebih tinggi dengan ukuran teks yang disisipkan. Contoh ini menghitung hasil perubahan indeks ini terlebih dahulu sehingga penyisipan berikutnya terjadi pada offset baru yang dikoreksi. Jadi, untuk menyisipkan pada offset target asli 25, 50, dan 75, indeks penyisipan 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.

Hapus teks

Untuk menghapus teks dari dokumen, buat Range terlebih dahulu 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)
                        .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()

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

Memindahkan teks

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