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

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

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

แทรกข้อความ

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแทรกชุดสตริงข้อความ ตำแหน่งดัชนีที่กำหนดในส่วนเนื้อหาของเอกสาร ตัวอย่างนี้ใช้ ออฟเซ็ตเป้าหมาย (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
  • การแทรกตัวที่สองจะเพิ่มอักขระ 10 ตัวที่ออฟเซ็ต 50+10=60
  • การแทรกตัวที่สามเพิ่มอักขระ 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()

ลดความซับซ้อนของกรณีต่างๆ โดยการเขียนย้อนกลับ เช่นเดียวกับการแทรก การลบ ข้อความ เปลี่ยนแปลงดัชนีของข้อความทั้งหมด "ด้านล่าง" ไว้ในเซกเมนต์ ขอย้ำอีกครั้งว่าการเขียน ย้อนกลับ ช่วยลดความยุ่งยากในการจัดการดัชนี

ย้ายข้อความ

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