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)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text2) .setLocation(new Location().setIndex(50)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text3) .setLocation(new Location().setIndex(75)))); 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, ), ), 'insertText' => array( 'text' => $text2, 'location' => array( 'index' => 50, ), ), 'insertText' => array( 'text' => $text3, 'location' => array( 'index' => 75, ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'insertText': { 'location': { 'index': 25, }, 'text': text1 } }, { 'insertText': { 'location': { 'index': 50, }, 'text': text2 } }, { 'insertText': { 'location': { 'index': 75, }, '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)) )); 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 ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'deleteContentRange': { 'range': { 'startIndex': 10, 'endIndex': 24, } } }, ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
ลดความซับซ้อนของกรณีต่างๆ โดยการเขียนย้อนกลับ เช่นเดียวกับการแทรก การลบข้อความจะเปลี่ยนดัชนีของข้อความทั้งหมดที่ "ด้านล่าง" ในกลุ่ม ขอย้ำอีกครั้งว่าการเขียนแบบย้อนหลังจะช่วยให้จัดการดัชนีได้ง่ายขึ้น
ย้ายข้อความ
หากต้องการย้ายข้อความ ให้ลบข้อความในตำแหน่งเดียวแล้วนำไปแทรกที่อื่น การลบเนื้อหาไม่ได้เป็นการทำสำเนาเนื้อหาดังกล่าว (ไม่มีการใช้คลิปบอร์ดที่เทียบเท่ากัน) คุณจึงต้องดึงเนื้อหาของช่วงก่อนเพื่อให้สามารถใช้ในคำขอแทรกข้อความได้