Google เอกสาร API ช่วยให้คุณสามารถแก้ไขสารบัญ การดำเนินการที่คุณสามารถทำได้ จะมีการดำเนินการต่อไปนี้
- แทรกและลบแถว คอลัมน์ หรือทั้งตาราง
- แทรกเนื้อหาลงในเซลล์ของตาราง
- อ่านเนื้อหาจากเซลล์ของตาราง
- แก้ไขคุณสมบัติของคอลัมน์และรูปแบบของแถว
ตารางใน Google เอกสาร แสดงเป็นประเภทของ StructuralElement ในเอกสาร ตารางแต่ละรายการ มีรายการแถวในตาราง โดยที่แต่ละแถวจะประกอบด้วย เซลล์ตาราง เช่นเดียวกับทั้งหมด องค์ประกอบโครงสร้าง ตารางจะมี ดัชนีเริ่มต้นและสิ้นสุด เพื่อระบุตำแหน่งของตารางในเอกสาร ดูโครงสร้าง เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดทำดัชนี คุณสมบัติของตารางมีองค์ประกอบรูปแบบหลายรายการ เช่น ความกว้างและระยะห่างจากขอบของคอลัมน์
ส่วนย่อย JSON ต่อไปนี้แสดงตาราง 2x2 แบบง่ายที่มีรายละเอียดส่วนใหญ่ นำออกแล้ว:
"table": {
"columns": 2,
"rows": 2,
"tableRows": [
{ "tableCells": [
{
"content": [ { "paragraph": { ... }, } ],
},
{
"content": [ { "paragraph": { ... }, } ],
}
],
},
{
"tableCells": [
{
"content": [ { "paragraph": { ... }, } ],
},
{
"content": [ { "paragraph": { ... }, } ],
}
],
}
]
}
การแทรกและลบตาราง
หากต้องการเพิ่มตารางใหม่ในเอกสาร ให้ใช้เมธอด InsertTableRequest. คุณต้องระบุสิ่งต่อไปนี้เมื่อแทรกตาราง
- มิติข้อมูลตารางในแถวและคอลัมน์
- ตำแหน่งที่จะแทรกตารางใหม่: ตำแหน่งนี้อาจเป็นดัชนีภายใน กลุ่ม หรืออาจจะเป็น สิ้นสุดกลุ่ม แท็บใดแท็บหนึ่งควรมีรหัสของแท็บที่ระบุ
ไม่มีวิธีการที่ชัดเจนในการลบตาราง วิธีลบตารางจาก เอกสาร ให้ปฏิบัติต่อเอกสารนั้นเช่นเดียวกับที่คุณทำกับเนื้อหาอื่น: ใช้ DeleteContentRangeRequest, การระบุช่วงที่ครอบคลุมทั้งตาราง
ตัวอย่างต่อไปนี้แทรกตาราง 3x3 ไว้ที่ด้านท้ายของเอกสารที่ว่างเปล่า
Java
// Insert a table at the end of the body. // (An empty or unspecified segmentId field indicates the document's body.) List<Request> requests = new ArrayList<>(); requests.add( new Request() .setInsertTable( new InsertTableRequest() .setEndOfSegmentLocation( new EndOfSegmentLocation().setTabId(TAB_ID)) .setRows(3) .setColumns(3))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents().batchUpdate(DOCUMENT_ID, body).execute();
Python
# Insert a table at the end of the body. # (An empty or unspecified segmentId field indicates the document's body.) requests = [{ 'insertTable': { 'rows': 3, 'columns': 3, 'endOfSegmentLocation': { 'segmentId': '', 'tabId': TAB_ID } }, } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()
ตัวอย่างที่เกี่ยวข้องนี้แสดงวิธีลบตารางที่แทรกไว้ก่อนหน้านี้
Java
// Delete a table that was inserted at the start of the body of the first tab. // (The table is the second element in the body: // documentTab.getBody().getContent().get(2).) Document document = docsService.documents().get(DOCUMENT_ID).setIncludeTabsContent(true).execute(); String tabId = document.getTabs()[0].getTabProperties().getTabId(); DocumentTab documentTab = document.getTabs()[0].getDocumentTab(); StructuralElement table = documentTab.getBody().getContent().get(2); List<Request> requests = new ArrayList<>(); requests.add( new Request() .setDeleteContentRange( new DeleteContentRangeRequest() .setRange( new Range() .setStartIndex(table.getStartIndex()) .setEndIndex(table.getEndIndex()) .setTabId(tabId)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents().batchUpdate(DOCUMENT_ID, body).execute();
Python
# Delete a table that was inserted at the start of the body of the first tab. # (The table is the second element in the body: ['body']['content'][2].) document = service.documents().get(documentId=DOCUMENT_ID, includeTabsContent=True).execute() tab_id = document['tabs'][0]['tabProperties']['tabId'] document_tab = document['tabs'][0]['documentTab'] table = document_tab['body']['content'][2] requests = [{ 'deleteContentRange': { 'range': { 'segmentId': '', 'startIndex': table['startIndex'], 'endIndex': table['endIndex'], 'tabId': tab_id } }, } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()
เนื่องจากคุณลบตารางที่เป็นเนื้อหาทั่วไปด้วยการระบุจุดเริ่มต้นและสิ้นสุด ดัชนี - คุณต้องรับดัชนีเหล่านี้มาจากที่ใดที่หนึ่ง ตัวอย่างนี้แสดง วิธีหนึ่งในการแยกดัชนีเหล่านี้จากเนื้อหาของเอกสาร
การแทรกและลบแถว
ถ้าเอกสารของคุณมีตารางอยู่แล้ว API ของ Google เอกสารจะช่วยให้คุณสามารถแทรก และลบแถวในตาราง ใช้ InsertTableRowRequest เพื่อแทรกแถวด้านบนหรือด้านล่าง เซลล์ตารางที่ระบุและ DeleteTableRowRequest เพื่อลบแถวที่กินพื้นที่ตำแหน่งเซลล์ที่ระบุ
ตัวอย่างต่อไปนี้แทรกข้อความในเซลล์แรกของตารางและเพิ่ม แถวในตาราง
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText("Hello") .setLocation(new Location().setIndex(5).setTabId(TAB_ID)))); requests.add(new Request().setInsertTableRow(new InsertTableRowRequest() .setTableCellLocation(new TableCellLocation() .setTableStartLocation(new Location() .setIndex(2).setTabId(TAB_ID)) .setRowIndex(1) .setColumnIndex(1)) .setInsertBelow(true))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
Python
requests = [{ 'insertText': { 'location': { 'index': 5, 'tabId': TAB_ID }, 'text': 'Hello' } }, { 'insertTableRow': { 'tableCellLocation': { 'tableStartLocation': { 'index': 2, 'tabId': TAB_ID }, 'rowIndex': 1, 'columnIndex': 1 }, 'insertBelow': 'true' } } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()
การแทรกและลบคอลัมน์
หากต้องการแทรกคอลัมน์ลงในตารางที่มีอยู่ ให้ใช้เมธอด InsertTableColumnRequest. คุณต้องระบุสิ่งต่อไปนี้
- เซลล์ถัดจากที่คุณต้องการแทรกคอลัมน์ใหม่
- ด้านใด (ซ้ายหรือขวา) ที่จะแทรกคอลัมน์ใหม่
ตัวอย่างต่อไปนี้แสดงวิธีแทรกคอลัมน์ลงในแท็ก 2x2 ตารางที่แสดงก่อนหน้านี้:
Java
List<Request> requests = new ArrayList<>(); requests.add( new Request() .setInsertTableColumn( new InsertTableColumnRequest() .setTableCellLocation( new TableCellLocation() .setTableStartLocation( new Location().setIndex(2).setTabId(TAB_ID)) .setRowIndex(0) .setColumnIndex(0)) .setInsertRight(true))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents().batchUpdate(DOCUMENT_ID, body).execute();
Python
requests = [{ 'insertTableColumn': { 'tableCellLocation': { 'tableStartLocation': { 'segmentId': '', 'index': 2, 'tabId': TAB_ID }, 'rowIndex': 0, 'columnIndex': 0 }, 'insertRight': True }, } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()
หากต้องการลบคอลัมน์ ให้ใช้เมธอด DeleteTableColumnRequest. คุณระบุตำแหน่งของเซลล์ภายในคอลัมน์เป้าหมายตามที่แสดงก่อนหน้านี้ สำหรับการแทรกคอลัมน์
กำลังอ่านเนื้อหาจากเซลล์ของตาราง
เซลล์ของตารางมีรายการองค์ประกอบโครงสร้าง องค์ประกอบโครงสร้างแต่ละรายการเหล่านี้อาจเป็นย่อหน้าที่มีข้อความหรือประเภทอื่นก็ได้ ของโครงสร้างได้เป็นอย่างดี หรือแม้กระทั่งอีกหนึ่งตาราง หากต้องการอ่านสารบัญ คุณสามารถ ตรวจสอบองค์ประกอบแต่ละรายการซ้ำ ตามที่แสดงใน ดึงข้อความ
การแทรกเนื้อหาลงในเซลล์ของตาราง
หากต้องการเขียนในเซลล์ของตาราง ให้ใช้ InsertTextRequest ไปยังดัชนีภายในเซลล์ที่คุณต้องการอัปเดต ดัชนีตารางจะปรับเป็น สำหรับข้อความที่อัปเดต เช่นเดียวกับการลบข้อความเซลล์ที่มีแอตทริบิวต์ DeleteContentRangeRequest.
การแก้ไขพร็อพเพอร์ตี้ของคอลัมน์
UpdateTableColumnPropertiesRequest ช่วยให้คุณแก้ไขคุณสมบัติของคอลัมน์ในตารางได้ตั้งแต่ 1 คอลัมน์ขึ้นไป
คุณต้องระบุดัชนีเริ่มต้นของตาราง พร้อมทั้ง TableColumnProperties ออบเจ็กต์ หากต้องการแก้ไขเฉพาะคอลัมน์ที่เลือก ให้ใส่รายการหมายเลขคอลัมน์ไว้ในแท็ก คำขอ; หากต้องการแก้ไขคอลัมน์ทั้งหมดในตาราง ให้ระบุรายการที่ว่างเปล่า
ตัวอย่างต่อไปนี้อัปเดตความกว้างของคอลัมน์ของตาราง โดยตั้งค่าคอลัมน์ทั้งหมด เป็นความกว้าง 100 พอยต์ จากนั้นความกว้างของคอลัมน์แรกถึง 200 พอยต์
Java
List<Request> requests = new ArrayList<>(); requests.add( new Request() .setUpdateTableColumnProperties( new UpdateTableColumnPropertiesRequest() .setTableStartLocation( new Location() .setIndex(2) .setTabId(TAB_ID)) .setColumnIndices(null) .setTableColumnProperties( new TableColumnProperties() .setWidthType("FIXED_WIDTH") .setWidth( new Dimension().setMagnitude(100d).setUnit("PT"))) .setFields("*"))); List<Integer> columnIndices = new ArrayList<>(); columnIndices.add(0); requests.add( new Request() .setUpdateTableColumnProperties( new UpdateTableColumnPropertiesRequest() .setTableStartLocation( new Location() .setIndex(2) .setTabId(TAB_ID)) .setColumnIndices(columnIndices) .setTableColumnProperties( new TableColumnProperties() .setWidthType("FIXED_WIDTH") .setWidth( new Dimension().setMagnitude(200d).setUnit("PT"))) .setFields("*"))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents().batchUpdate(DOCUMENT_ID, body).execute();
Python
requests = [{ 'updateTableColumnProperties': { 'tableStartLocation': {'index': 2, 'tabId': TAB_ID}, 'columnIndices': [], 'tableColumnProperties': { 'widthType': 'FIXED_WIDTH', 'width': { 'magnitude': 100, 'unit': 'PT' } }, 'fields': '*' }, 'updateTableColumnProperties': { 'tableStartLocation': {'index': 2, 'tabId': TAB_ID}, 'columnIndices': [0], 'tableColumnProperties': { 'widthType': 'FIXED_WIDTH', 'width': { 'magnitude': 200, 'unit': 'PT' } }, 'fields': '*' }, } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()
การแก้ไขรูปแบบแถว
UpdateTableRowsStyleRequest ให้คุณแก้ไขรูปแบบของแถวอย่างน้อย 1 แถวในตาราง
คุณต้องระบุดัชนีเริ่มต้นของตาราง พร้อมทั้ง TableRowStyle ออบเจ็กต์ หากต้องการแก้ไขเฉพาะแถวที่เลือก ให้ใส่รายการหมายเลขแถวใน คำขอ; หากต้องการแก้ไขแถวทั้งหมดในตาราง ให้ระบุรายการที่ว่างเปล่า
ตัวอย่างต่อไปนี้กำหนดความสูงขั้นต่ำของแถว 3 ของตาราง
Java
List<Integer> rowIndices = new ArrayList<>(); rowIndices.add(3); List<Request> requests = new ArrayList<>(); requests.add( new Request() .setUpdateTableRowStyle( new UpdateTableRowStyleRequest() .setTableStartLocation( new Location() .setIndex(2) .setTabId(TAB_ID)) .setRowIndices(rowIndices) .setTableRowStyle( new TableRowStyle() .setMinRowHeight( new Dimension().setMagnitude(18d).setUnit("PT"))) .setFields("*"))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents().batchUpdate(DOCUMENT_ID, body).execute();
Python
requests = [{ 'updateTableRowStyle': { 'tableStartLocation': {'index': 2, 'tabId': TAB_ID}, 'rowIndices': [3], 'tableRowStyle': { 'minRowHeight': { 'magnitude': 18, 'unit': 'PT' } }, 'fields': '*' }, } ] result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()