Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của 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 bao gồm cả hai thao tác, trước đó là thao tác get nội dung.
Bạn có thể chèn hoặc xoá văn bản trong bất kỳ đoạn nào của thẻ tài liệu (nội dung, tiêu đề, chân trang hoặc chú thích).
Mẫu mã sau đây cho thấy cách bạn có thể chèn một chuỗi văn bản tại các vị trí chỉ mục được chỉ định trong nội dung của một tài liệu. Ví dụ này sử dụng 3 độ lệch mục tiêu (25, 50 và 75) và chèn một chuỗi gồm 10 ký tự vào mỗi vị trí.
Mỗi lần chèn sẽ tăng tất cả các chỉ mục có số thứ tự 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 thao tác chèn tiếp theo diễn ra ở độ lệch mới, đã được điều chỉnh. Do đó, để chèn vào các độ lệch mục tiêu ban đầu là 25, 50 và 75, chỉ mục chèn thực tế là:
Lần chèn đầu tiên sẽ thêm 10 ký tự ở độ lệch 25.
Lần chèn thứ hai sẽ thêm 10 ký tự ở độ lệch 50 + 10=60.
Lần chèn thứ ba sẽ thêm 10 ký tự ở độ lệch 75 + 10 + 10=95.
Xoá văn bản
Để xoá văn bản khỏi 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 nội dung của một tài liệu.
Đơn giản hoá vấn đề bằng cách viết ngược. Tương tự như thao tác chèn, việc xoá văn bản sẽ làm thay đổi chỉ mục của tất cả văn bản "bên dưới" trong đoạn. Một lần nữa, việc viết ngược có thể giúp bạn đơ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.
Việc xoá nội dung 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ề bảng 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.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-29 UTC."],[],[],null,["# Insert, delete, and move text\n\nThe Google Docs API lets you insert or delete text in a document. Moving text\ninvolves both operations, preceded by a `get` of the content.\n\nYou can insert or delete text in any of a document\n[tab](/workspace/docs/api/how-tos/tabs)'s segments (body, header, footer, or\nfootnote).\n\nInsert text\n-----------\n\nTo insert text into a document, use the\n[`documents.batchUpdate`](/workspace/docs/api/reference/rest/v1/documents/batchUpdate)\nmethod and include an\n[`InsertTextRequest`](/workspace/docs/api/reference/rest/v1/documents/request#inserttextrequest)\nwith the text and location as the payload.\n\nThe following code sample shows how you might insert a series of text strings at\nspecified index locations in the body of a document. The example uses three\ntarget offsets (25, 50, and 75) and inserts a ten-character string at each\nlocation.\n**Note:** Indexes are measured in UTF-16 code units. For more information, see [Start and end indexes](/workspace/docs/api/concepts/structure#indexes). \n\n### Java\n\n\n```java\nList\u003cRequest\u003e requests = new ArrayList\u003c\u003e();\nrequests.add(new Request().setInsertText(new InsertTextRequest()\n .setText(text1)\n .setLocation(new Location().setIndex(25).setTabId(TAB_ID))));\n\nrequests.add(new Request().setInsertText(new InsertTextRequest()\n .setText(text2)\n .setLocation(new Location().setIndex(50).setTabId(TAB_ID))));\n\nrequests.add(new Request().setInsertText(new InsertTextRequest()\n .setText(text3)\n .setLocation(new Location().setIndex(75).setTabId(TAB_ID))));\n\nBatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);\nBatchUpdateDocumentResponse response = docsService.documents()\n .batchUpdate(DOCUMENT_ID, body).execute();\n```\n\n\u003cbr /\u003e\n\n### PHP\n\n\n```php\n$requests = array();\n$requests[] = new Google_Service_Docs_Request(array(\n 'insertText' =\u003e array(\n 'text' =\u003e $text1,\n 'location' =\u003e array(\n 'index' =\u003e 25,\n 'tabId' =\u003e TAB_ID,\n ),\n ),\n 'insertText' =\u003e array(\n 'text' =\u003e $text2,\n 'location' =\u003e array(\n 'index' =\u003e 50,\n 'tabId' =\u003e TAB_ID,\n ),\n ),\n 'insertText' =\u003e array(\n 'text' =\u003e $text3,\n 'location' =\u003e array(\n 'index' =\u003e 75,\n 'tabId' =\u003e TAB_ID,\n ),\n ),\n));\n\n$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(\n 'requests' =\u003e $requests\n));\n\n$response = $service-\u003edocuments-\u003ebatchUpdate($documentId, $batchUpdateRequest);\n```\n\n\u003cbr /\u003e\n\n### Python\n\n\n```python\nrequests = [\n {\n 'insertText': {\n 'location': {\n 'index': 25,\n 'tabId': TAB_ID\n },\n 'text': text1\n }\n },\n {\n 'insertText': {\n 'location': {\n 'index': 50,\n 'tabId': TAB_ID\n },\n 'text': text2\n }\n },\n {\n 'insertText': {\n 'location': {\n 'index': 75,\n 'tabId': TAB_ID\n },\n 'text': text3\n }\n },\n]\n\nresult = service.documents().batchUpdate(\n documentId=DOCUMENT_ID, body={'requests': requests}).execute()\n```\n\n\u003cbr /\u003e\n\nEach insertion increments all the higher-numbered indexes by the size of the\ninserted text. The example precalculates the result of these index changes so\nthat subsequent insertions happen at the new, corrected offset. Thus to insert\nat the original target offsets of 25, 50, and 75, the actual insertion indexes\nare:\n\n- First insertion adds 10 characters at offset 25.\n- Second insertion adds 10 characters at offset 50+10=60.\n- Third insertion adds 10 characters at offset 75+10+10=95.\n\n| **Simplify matters by writing backwards.** To avoid having to precalculate these offset changes, order your insertions to \"write backwards\": do the insertion at the highest-numbered index first, working your way towards the beginning with each insertion. This ordering makes sure that each write's offsets are unaffected by the preceding ones.\n\nDelete text\n-----------\n\nTo delete text from a document, first construct a\n[`Range`](/workspace/docs/api/reference/rest/v1/documents#range) that defines\nthe range of text to delete. Then use the `documents.batchUpdate` method and\ninclude a\n[`DeleteContentRangeRequest`](/workspace/docs/api/reference/rest/v1/documents/request#deletecontentrangerequest).\n| Be sure you understand the [rules and behavior](/workspace/docs/api/concepts/rules-behavior#delete-text) associated with deleting text.\n\nThe following code sample shows how you might delete the text between index 10\nand index 24 in the body of a document. \n\n### Java\n\n\n```java\nList\u003cRequest\u003e requests = new ArrayList\u003c\u003e();\nrequests.add(new Request().setDeleteContentRange(\n new DeleteContentRangeRequest()\n .setRange(new Range()\n .setStartIndex(10)\n .setEndIndex(24)\n .setTabId(TAB_ID))\n ));\n\nBatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);\nBatchUpdateDocumentResponse response = docsService.documents()\n .batchUpdate(DOCUMENT_ID, body).execute();\n```\n\n\u003cbr /\u003e\n\n### PHP\n\n\n```php\n$requests = array();\n$requests[] = new Google_Service_Docs_Request(array(\n 'deleteContentRange' =\u003e array(\n 'range' =\u003e array(\n 'startIndex' =\u003e 10,\n 'endIndex' =\u003e 24,\n 'tabId' =\u003e TAB_ID\n ),\n ),\n));\n\n$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(\n 'requests' =\u003e $requests\n));\n\n$response = $service-\u003edocuments-\u003ebatchUpdate($documentId, $batchUpdateRequest);\n```\n\n\u003cbr /\u003e\n\n### Python\n\n\n```python\nrequests = [\n {\n 'deleteContentRange': {\n 'range': {\n 'startIndex': 10,\n 'endIndex': 24,\n 'tabId': TAB_ID\n }\n\n }\n\n },\n]\nresult = service.documents().batchUpdate(\n documentId=DOCUMENT_ID, body={'requests': requests}).execute()\n```\n\n\u003cbr /\u003e\n\n**Simplify matters by writing backwards.** As with insertions, deleting\ntext alters the indexes of all the text \"below\" in the segment. Again, [writing\nbackwards](#write_backwards) can simplify your handling of indexes.\n\nMove text\n---------\n\nTo move text, you delete it in one location and then insert it elsewhere.\nDeleting content doesn't give you a copy of it (there's no equivalent concept of\na clipboard) so you must extract the contents of the range first so you can use\nin your insert text request.\n\nRelated topics\n--------------\n\n- [Create and manage documents](/workspace/docs/api/how-tos/documents)\n- [Merge text into a document](/workspace/docs/api/how-tos/merge)\n- [Structure of a Google Docs document](/workspace/docs/api/concepts/structure)"]]