Xử lý các danh sách

Google Tài liệu API hỗ trợ việc tạo danh sách trong tài liệu mới, chuyển đổi các đoạn văn bản thuần tuý hiện có thành danh sách có dấu đầu dòng và xoá dấu đầu dòng khỏi các đoạn văn bản.

Tạo danh sách có thứ tự trong tài liệu mới

Docs API hỗ trợ việc tạo danh sách có thứ tự trong một tài liệu mới bằng cách chèn văn bản rồi áp dụng kiểu danh sách cho văn bản trong một yêu cầu hàng loạt duy nhất.

Cách tạo danh sách có thứ tự trong tài liệu mới:

  1. Sử dụng phương thức documents.create để tạo một tài liệu.

  2. Sử dụng phương thức documents.batchUpdate và cung cấp một InsertTextRequest để thêm nội dung vào tài liệu. Sử dụng ký tự dòng mới (\n) để phân tách các mục trong danh sách.

  3. Trong cùng một lần cập nhật hàng loạt, hãy thêm CreateParagraphBulletsRequest, Range để chỉ định dải ô văn bản và BulletGlyphPreset để đặt mẫu đánh số.

Mẫu mã sau đây cho biết cách tạo một tài liệu, sau đó chèn 3 mục dưới dạng danh sách có đánh số. BulletGlyphPreset sử dụng NUMBERED_DECIMAL_ALPHA_ROMAN để định dạng danh sách. Điều này có nghĩa là 3 cấp độ lồng ghép đầu tiên của danh sách có đánh số được biểu thị bằng một số thập phân, một chữ cái viết thường và một chữ số La Mã viết thường.

Java

Document doc = new Document().setTitle("New List Document");
doc = docsService.documents().create(doc).execute();
String documentId = doc.getDocumentId();

List<Request> requests = new ArrayList<>();
requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText("Item 1\nItem 2\nItem 3\n")
        .setLocation(new Location().setIndex(1).setTabId(TAB_ID))));

requests.add(new Request().setCreateParagraphBullets(
        new CreateParagraphBulletsRequest()
                .setRange(new Range()
                        .setStartIndex(1)
                        .setEndIndex(22)
                        .setTabId(TAB_ID))
                .setBulletPreset("NUMBERED_DECIMAL_ALPHA_ROMAN")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
docsService.documents().batchUpdate(documentId, body).execute();

System.out.println("Created document with ID: " + documentId);

Python

title = 'New List Document'
body = {'title': title}
doc = service.documents().create(body=body).execute()
document_id = doc.get('documentId')

requests = [
    {
        'insertText': {
            'location': {
                'index': 1,
                'tabId': TAB_ID
            },
            'text': 'Item 1\nItem 2\nItem 3\n'
        }
    },
    {
        'createParagraphBullets': {
            'range': {
                'startIndex': 1,
                'endIndex': 22,
                'tabId': TAB_ID
            },
            'bulletPreset': 'NUMBERED_DECIMAL_ALPHA_ROMAN'
        }
    }
]

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

print(f"Created document with ID: {document_id}")

Thay thế TAB_ID bằng mã nhận dạng của thẻ chứa nội dung danh sách.

Chuyển đổi đoạn văn thành danh sách

Một thao tác định dạng đoạn văn phổ biến là chuyển đổi các đoạn văn hiện có thành danh sách có dấu đầu dòng.

Để tạo danh sách, hãy sử dụng phương thức documents.batchUpdate và cung cấp một CreateParagraphBulletsRequest. Thêm Range để chỉ định văn bản bị ảnh hưởng và BulletGlyphPreset để đặt mẫu cho dấu đầu dòng.

Tất cả các đoạn văn trùng với phạm vi đã cho đều được đánh dấu bằng dấu đầu dòng. Nếu dải ô được chỉ định trùng lặp với một bảng, thì dấu đầu dòng sẽ được áp dụng trong các ô của bảng. Cấp độ lồng của mỗi đoạn văn được xác định bằng cách đếm các thẻ tab ở đầu mỗi đoạn văn.

Bạn không thể điều chỉnh cấp độ lồng của một dấu đầu dòng hiện có. Thay vào đó, bạn phải xoá dấu đầu dòng, đặt các dấu tab đầu dòng ở phía trước đoạn văn, rồi tạo lại dấu đầu dòng. Để biết thêm thông tin, hãy xem bài viết Xoá dấu đầu dòng khỏi danh sách.

Bạn cũng có thể dùng CreateParagraphBulletsRequest để thay đổi kiểu dấu đầu dòng cho danh sách hiện có.

Mẫu mã sau đây cho thấy một yêu cầu hàng loạt, trước tiên sẽ chèn văn bản vào đầu tài liệu, sau đó tạo một danh sách từ các đoạn văn trải dài trong 50 ký tự đầu tiên. BulletGlyphPreset sử dụng BULLET_ARROW_DIAMOND_DISC, tức là 3 cấp độ lồng nhau đầu tiên của danh sách có dấu đầu dòng được biểu thị bằng một mũi tên, một hình kim cương và một đĩa.

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText("Item One\n")
        .setLocation(new Location().setIndex(1).setTabId(TAB_ID))));

requests.add(new Request().setCreateParagraphBullets(
        new CreateParagraphBulletsRequest()
                .setRange(new Range()
                        .setStartIndex(1)
                        .setEndIndex(50)
                        .setTabId(TAB_ID))
                .setBulletPreset("BULLET_ARROW_DIAMOND_DISC")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 1,
                'tabId': TAB_ID
            },
            'text': 'Item One\n',
        }}, {
        'createParagraphBullets': {
            'range': {
                'startIndex': 1,
                'endIndex':  50,
                'tabId': TAB_ID
            },
            'bulletPreset': 'BULLET_ARROW_DIAMOND_DISC',
        }
    }
]

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

Thay thế TAB_ID bằng mã nhận dạng của thẻ chứa nội dung danh sách hoặc bỏ qua để mặc định là thẻ đầu tiên trong tài liệu.

Chuyển đổi một đoạn văn thành danh sách.
Hình 1. Chuyển đổi một đoạn văn thành danh sách.

Xoá dấu đầu dòng khỏi danh sách

Để xoá dấu đầu dòng khỏi danh sách đoạn văn, hãy dùng phương thức documents.batchUpdate và cung cấp DeleteParagraphBulletsRequest. Thêm Range để chỉ định văn bản bị ảnh hưởng.

Phương thức này sẽ xoá tất cả các dấu đầu dòng trùng lặp với phạm vi đã cho, bất kể cấp độ lồng nhau. Để duy trì trực quan cấp độ lồng ghép, khoảng thụt lề sẽ được thêm vào đầu mỗi đoạn tương ứng.

Mẫu mã sau đây cho thấy một yêu cầu hàng loạt xoá dấu đầu dòng khỏi danh sách đoạn văn.

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setDeleteParagraphBullets(
        new DeleteParagraphBulletsRequest()
                .setRange(new Range()
                        .setStartIndex(1)
                        .setEndIndex(50)
                        .setTabId(TAB_ID))));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
        {
        'deleteParagraphBullets': {
            'range': {
                'startIndex': 1,
                'endIndex':  50,
                'tabId': TAB_ID
            },
        }
    }
]

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

Thay thế TAB_ID bằng mã nhận dạng của thẻ chứa nội dung danh sách hoặc bỏ qua để mặc định là thẻ đầu tiên trong tài liệu.