Google Docs API memungkinkan Anda mengedit isi tabel. Operasi yang dapat Anda lakukan meliputi hal berikut:
- Menyisipkan dan menghapus baris, kolom, atau seluruh tabel.
- Sisipkan konten ke dalam sel tabel.
- Membaca konten dari sel tabel.
- Mengubah properti kolom dan gaya baris.
Tabel di Google Dokumen direpresentasikan sebagai jenis StructuralElement dalam dokumen. Setiap tabel berisi daftar baris tabel di mana setiap baris berisi daftar sel tabel. Seperti semua elemen struktural, tabel itu memiliki indeks awal dan akhir, yang menunjukkan posisi tabel dalam dokumen. Lihat strukturnya untuk informasi selengkapnya tentang pengindeksan. Properti tabel mencakup banyak elemen gaya seperti lebar kolom dan padding.
Fragmen JSON berikut menampilkan tabel 2x2 sederhana dengan sebagian besar detail dihapus:
"table": {
"columns": 2,
"rows": 2,
"tableRows": [
{ "tableCells": [
{
"content": [ { "paragraph": { ... }, } ],
},
{
"content": [ { "paragraph": { ... }, } ],
}
],
},
{
"tableCells": [
{
"content": [ { "paragraph": { ... }, } ],
},
{
"content": [ { "paragraph": { ... }, } ],
}
],
}
]
}
Menyisipkan dan menghapus tabel
Untuk menambahkan tabel baru ke dokumen, gunakan InsertTableRequest. Anda harus menetapkan hal berikut saat menyisipkan tabel:
- Dimensi tabel dalam baris dan kolom.
- Lokasi untuk menyisipkan tabel baru: ini bisa berupa indeks dalam segmen, atau dapat berupa akhir segmen. Salah satunya harus menyertakan ID tab yang ditentukan.
Tidak ada metode eksplisit untuk menghapus tabel. Untuk menghapus tabel dari dokumen, perlakukanlah seperti halnya konten lainnya: gunakan DeleteContentRangeRequest, yang menentukan rentang yang mencakup seluruh tabel.
Contoh berikut menyisipkan tabel 3x3 di akhir dokumen kosong:
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()
Contoh yang sesuai ini menunjukkan cara menghapus tabel yang sebelumnya disisipkan:
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()
Karena Anda menghapus tabel sebagai konten biasa—dengan menentukan awal dan akhir — Anda perlu mendapatkan indeks ini dari suatu tempat. Contoh ini menunjukkan salah satu cara untuk mengekstrak indeks-indeks ini dari isi dokumen.
Menyisipkan dan menghapus baris
Jika dokumen sudah berisi sebuah tabel, Google Docs API memungkinkan Anda menyisipkan dan menghapus baris-baris tabel. Menggunakan InsertTableRowRequest untuk menyisipkan baris di atas atau di bawah sel tabel yang ditentukan dan metode DeleteTableRowRequest untuk menghapus baris yang membentang di lokasi sel tertentu.
Contoh berikut menyisipkan teks ke dalam sel tabel pertama dalam tabel dan menambahkan baris tabel.
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()
Menyisipkan dan menghapus kolom
Untuk menyisipkan kolom ke dalam tabel yang ada, gunakan metode InsertTableColumnRequest. Anda harus menentukan hal berikut:
- Sel di sebelah tempat Anda ingin sisipkan kolom baru.
- Sisi mana (kiri atau kanan) untuk menyisipkan kolom baru.
Contoh berikut menunjukkan cara menyisipkan kolom ke dalam dimensi 2x2 tabel yang ditampilkan sebelumnya:
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()
Untuk menghapus kolom, gunakan DeleteTableColumnRequest. Anda menentukan lokasi sel dalam kolom target seperti yang ditunjukkan sebelumnya untuk menyisipkan kolom.
Membaca konten dari sel tabel
Sel tabel berisi daftar elemen struktural; setiap elemen struktural ini dapat berupa paragraf dengan teks atau jenis lainnya struktur —bahkan tabel lain. Untuk membaca isi tabel, Anda dapat memeriksa setiap elemen secara rekursif, seperti yang ditunjukkan pada Ekstrak Teks.
Menyisipkan konten ke dalam sel tabel
Untuk menulis ke sel tabel, gunakan InsertTextRequest pada indeks di dalam sel yang ingin Anda perbarui. Indeks tabel menyesuaikan dengan memperhitungkan teks yang diperbarui. Hal yang sama berlaku untuk menghapus teks sel dengan DeleteContentRangeRequest.
Mengubah properti kolom
Tujuan UpdateTableColumnPropertiesRequest memungkinkan Anda mengubah properti dari satu atau lebih kolom di tabel.
Anda harus memberikan indeks awal tabel, beserta ID TableColumnProperties . Untuk mengubah kolom yang dipilih saja, sertakan daftar nomor kolom di bagian meminta; untuk mengubah semua kolom dalam tabel, berikan daftar kosong.
Contoh berikut memperbarui lebar kolom tabel, menyetel semua kolom menjadi 100 pt, kemudian lebar kolom pertama menjadi 200 pt:
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()
Mengubah gaya baris
UpdateTableRowsStyleRequest memungkinkan Anda mengubah gaya dari satu atau lebih baris dalam tabel.
Anda harus memberikan indeks awal tabel, beserta ID TableRowStyle . Untuk mengubah baris yang dipilih saja, sertakan daftar nomor baris pada meminta; untuk mengubah semua baris dalam tabel, sediakan daftar kosong.
Contoh berikut menetapkan tinggi minimum baris 3 tabel:
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()