टेबल के साथ काम करना

Google Docs API की मदद से, टेबल के कॉन्टेंट में बदलाव किया जा सकता है. ये कार्रवाइयां की जा सकती हैं इन्हें शामिल करें:

  • पंक्तियां, कॉलम या पूरी टेबल शामिल करना और मिटाना.
  • टेबल की सेल में कॉन्टेंट डालें.
  • टेबल की सेल से कॉन्टेंट पढ़ना.
  • कॉलम की प्रॉपर्टी और पंक्तियों की स्टाइल में बदलाव करें.

Google Docs में टेबल जिसे 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()

ऐसा इसलिए, क्योंकि किसी टेबल को सामान्य कॉन्टेंट के तौर पर मिटाया जाता है. इसके लिए, सेशन के शुरू और खत्म होने का समय तय किया जाता है इंडेक्स करना—आपको ये इंडेक्स कहीं से भी लेने होंगे. उदाहरण में दिखाया गया है कि इन इंडेक्स को दस्तावेज़ के कॉन्टेंट से एक्सट्रैक्ट करने का एक तरीका है.

पंक्तियां शामिल करना और मिटाना

अगर आपके दस्तावेज़ में पहले से ही एक तालिका है, तो Google दस्तावेज़ API आपको और टेबल की पंक्तियां मिटा दी जाएंगी. 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 की मदद से टेबल के एक या ज़्यादा कॉलम की प्रॉपर्टी में बदलाव किया जा सकता है.

आपको टेबल के शुरुआती इंडेक्स के साथ-साथ, 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 की मदद से टेबल में एक या उससे ज़्यादा पंक्तियों की स्टाइल में बदलाव किया जा सकता है.

आपको टेबल के शुरुआती इंडेक्स के साथ-साथ, TableRowStyle ऑब्जेक्ट है. केवल चयनित पंक्तियों को संशोधित करने के लिए, अनुरोध; टेबल की सभी पंक्तियों में बदलाव करने के लिए, एक खाली सूची दें.

नीचे दिए गए उदाहरण में टेबल की तीसरी पंक्ति की कम से कम ऊंचाई सेट की गई है:

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()