แทรก ลบ และย้ายข้อความ

Google เอกสาร API ช่วยให้คุณแทรกหรือลบข้อความในเอกสารได้ การย้ายข้อความ เกี่ยวข้องกับการดำเนินการทั้ง 2 อย่าง โดยมีgetของเนื้อหานำหน้า

คุณสามารถแทรกหรือลบข้อความในส่วนใดก็ได้ของแท็บเอกสาร (เนื้อหา ส่วนหัว ส่วนท้าย หรือ เชิงอรรถ)

แทรกข้อความ

หากต้องการแทรกข้อความลงในเอกสาร ให้ใช้เมธอด documents.batchUpdate และรวม InsertTextRequest ที่มีข้อความและตำแหน่งเป็นเพย์โหลด

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแทรกชุดสตริงข้อความที่ตำแหน่งดัชนีที่ระบุในเนื้อหาของเอกสาร ตัวอย่างนี้ใช้การชดเชยเป้าหมาย 3 รายการ (25, 50 และ 75) และแทรกสตริง 10 อักขระในแต่ละตำแหน่ง

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

การแทรกแต่ละครั้งจะเพิ่มดัชนีที่มีหมายเลขสูงกว่าทั้งหมดตามขนาดของข้อความที่แทรก ตัวอย่างจะคำนวณผลลัพธ์ของการเปลี่ยนแปลงดัชนีเหล่านี้ล่วงหน้า เพื่อให้การแทรกในภายหลังเกิดขึ้นที่ออฟเซ็ตใหม่ที่แก้ไขแล้ว ดังนั้น หากต้องการแทรกที่ออฟเซ็ตเป้าหมายเดิมที่ 25, 50 และ 75 ดัชนีการแทรกจริงจะเป็นดังนี้

  • การแทรกครั้งแรกจะเพิ่มอักขระ 10 ตัวที่ออฟเซ็ต 25
  • การแทรกครั้งที่ 2 จะเพิ่มอักขระ 10 ตัวที่ออฟเซ็ต 50+10=60
  • การแทรกครั้งที่ 3 จะเพิ่มอักขระ 10 ตัวที่ออฟเซ็ต 75+10+10=95

ลบข้อความ

หากต้องการลบข้อความจากเอกสาร ให้สร้าง Range ที่กำหนด ช่วงของข้อความที่จะลบก่อน จากนั้นใช้วิธี documents.batchUpdate และ ใส่DeleteContentRangeRequest

กฎและลักษณะการทำงาน ที่เกี่ยวข้องกับการลบข้อความ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบข้อความระหว่างดัชนี 10 และดัชนี 24 ในเนื้อหาของเอกสาร

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

ทำให้เรื่องต่างๆ ง่ายขึ้นด้วยการเขียนย้อนกลับ เช่นเดียวกับการแทรก การลบ ข้อความจะเปลี่ยนดัชนีของข้อความทั้งหมดที่อยู่ "ด้านล่าง" ในกลุ่ม อีกครั้งที่การเขียน ย้อนกลับจะช่วยให้การจัดการดัชนีง่ายขึ้น

ย้ายข้อความ

หากต้องการย้ายข้อความ ให้ลบข้อความในตำแหน่งหนึ่ง แล้วแทรกข้อความในตำแหน่งอื่น การลบเนื้อหาไม่ได้ให้สำเนาของเนื้อหาแก่คุณ (ไม่มีแนวคิดที่เทียบเท่ากับคลิปบอร์ด) ดังนั้นคุณต้องแยกเนื้อหาของช่วงก่อนเพื่อให้ใช้ในคำขอแทรกข้อความได้