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()
เขียนจากหลังไปหน้าเพื่อลดความซับซ้อน การลบข้อความจะเปลี่ยนดัชนีของข้อความทั้งหมด "ด้านล่าง" ในส่วนนั้นๆ เช่นเดียวกับการแทรก อีกครั้ง การเขียนย้อนกลับจะช่วยให้การจัดการดัชนีง่ายขึ้น
ย้ายข้อความ
หากต้องการย้ายข้อความ ให้ลบข้อความในตำแหน่งหนึ่งแล้วแทรกข้อความนั้นในตำแหน่งอื่น การลบเนื้อหาจะไม่สร้างสำเนาของเนื้อหา (ไม่มีแนวคิดที่เทียบเท่าของคลิปบอร์ด) คุณจึงต้องดึงข้อมูลเนื้อหาของช่วงก่อนจึงจะใช้ในคำขอแทรกข้อความได้