Chèn, xoá và di chuyển văn bản

API Google Tài liệu cho phép bạn chèn hoặc xoá văn bản trong tài liệu. Thao tác di chuyển văn bản liên quan đến cả hai thao tác, trước đó là get của nội dung.

Bạn có thể chèn hoặc xoá văn bản trong bất kỳ phần nào của thẻ tài liệu (phần nội dung, đầu trang, chân trang hoặc chú thích cuối trang).

Chèn văn bản

Để chèn văn bản vào một tài liệu, hãy sử dụng phương thức documents.batchUpdate và thêm một InsertTextRequest có văn bản và vị trí làm tải trọng.

Mã mẫu sau đây cho biết cách bạn có thể chèn một loạt chuỗi văn bản tại các vị trí chỉ mục được chỉ định trong phần nội dung của tài liệu. Ví dụ này sử dụng ba độ dời mục tiêu (25, 50 và 75) và chèn một chuỗi gồm 10 ký tự tại mỗi vị trí.

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

Mỗi lần chèn sẽ tăng tất cả các chỉ mục có số cao hơn theo kích thước của văn bản được chèn. Ví dụ này tính toán trước kết quả của những thay đổi về chỉ mục này để các lần chèn tiếp theo diễn ra tại độ dời mới, đã được sửa. Do đó, để chèn vào các độ lệch mục tiêu ban đầu là 25, 50 và 75, các chỉ mục chèn thực tế là:

  • Lần chèn đầu tiên sẽ thêm 10 ký tự tại độ dời 25.
  • Lần chèn thứ hai sẽ thêm 10 ký tự tại độ dời 50+10=60.
  • Lần chèn thứ ba thêm 10 ký tự tại độ dời 75+10+10=95.

Xoá văn bản

Để xoá văn bản khỏi một tài liệu, trước tiên, hãy tạo một Range xác định phạm vi văn bản cần xoá. Sau đó, hãy sử dụng phương thức documents.batchUpdate và thêm DeleteContentRangeRequest.

Mẫu mã sau đây cho biết cách bạn có thể xoá văn bản giữa chỉ mục 10 và chỉ mục 24 trong phần nội dung của tài liệu.

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

Đơn giản hoá vấn đề bằng cách viết ngược. Giống như các mục chèn, việc xoá văn bản sẽ thay đổi chỉ mục của tất cả văn bản "bên dưới" trong phân đoạn. Xin nhắc lại, việc ghi ngược có thể đơn giản hoá việc xử lý các chỉ mục.

Di chuyển văn bản

Để di chuyển văn bản, bạn xoá văn bản đó ở một vị trí rồi chèn văn bản đó vào vị trí khác. Thao tác xoá nội dung sẽ không cung cấp cho bạn bản sao của nội dung đó (không có khái niệm tương đương với bảng nhớ tạm), vì vậy, trước tiên, bạn phải trích xuất nội dung của dải ô để có thể sử dụng trong yêu cầu chèn văn bản.