টেবিল নিয়ে কাজ করা

Google ডক্স API আপনাকে টেবিলের বিষয়বস্তু সম্পাদনা করতে দেয়। আপনি যে অপারেশনগুলি সম্পাদন করতে পারেন তার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • সারি, কলাম বা সম্পূর্ণ টেবিল সন্নিবেশ করুন এবং মুছুন।
  • টেবিল কক্ষে বিষয়বস্তু সন্নিবেশ করান।
  • টেবিল ঘর থেকে বিষয়বস্তু পড়ুন.
  • কলামের বৈশিষ্ট্য এবং সারির শৈলী পরিবর্তন করুন।

Google ডক্সে টেবিলগুলিকে নথিতে কাঠামোগত উপাদানের একটি প্রকার হিসাবে উপস্থাপন করা হয়। প্রতিটি টেবিলে টেবিল সারির একটি তালিকা থাকে যেখানে প্রতিটি সারিতে টেবিল ঘরের একটি তালিকা থাকে। সমস্ত কাঠামোগত উপাদানগুলির মতো, টেবিলের শুরু এবং শেষ সূচক রয়েছে, যা নথিতে টেবিলের অবস্থান নির্দেশ করে। ইনডেক্সিং সম্পর্কে আরও তথ্যের জন্য কাঠামো দেখুন। সারণী বৈশিষ্ট্যগুলি কলামের প্রস্থ এবং প্যাডিংয়ের মতো অনেক শৈলী উপাদান অন্তর্ভুক্ত করে।

নিম্নলিখিত JSON খণ্ডটি একটি সাধারণ 2x2 সারণী দেখায় যার বেশিরভাগ বিবরণ সরানো হয়েছে:

"table": {
    "columns": 2,
    "rows": 2,
    "tableRows": [
        { "tableCells": [
                {
                    "content": [ { "paragraph": { ...  }, } ],
                },
                {
                    "content": [ { "paragraph": { ... }, } ],
                }
            ],
        },
        {
            "tableCells": [
                {
                    "content": [ { "paragraph": { ... }, } ],
                },
                {
                    "content": [ { "paragraph": { ... }, } ],
                }
            ],
        }
    ]
}

সারণী সন্নিবেশ করা এবং মুছে ফেলা হচ্ছে

একটি নথিতে একটি নতুন টেবিল যোগ করতে, InsertTableRequest ব্যবহার করুন। একটি টেবিল সন্নিবেশ করার সময় আপনাকে অবশ্যই নিম্নলিখিতগুলি উল্লেখ করতে হবে:

  • সারি এবং কলামে টেবিলের মাত্রা।
  • নতুন টেবিল সন্নিবেশ করার অবস্থান: এটি একটি সেগমেন্টের মধ্যে একটি সূচক হতে পারে, অথবা এটি একটি বিভাগের শেষ হতে পারে। যেকোনো একটিতে নির্দিষ্ট ট্যাবের আইডি অন্তর্ভুক্ত করা উচিত।

টেবিল মুছে ফেলার জন্য কোন সুস্পষ্ট পদ্ধতি নেই। একটি নথি থেকে একটি টেবিল মুছে ফেলার জন্য, এটিকে আপনি অন্য কোন বিষয়বস্তুর মত ব্যবহার করুন: DeleteContentRangeRequest ব্যবহার করুন, একটি পরিসর নির্দিষ্ট করে যা পুরো টেবিলটি কভার করে।

নিম্নলিখিত উদাহরণটি একটি খালি নথির শেষে একটি 3x3 টেবিল সন্নিবেশ করায়:

জাভা

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

পাইথন

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

এই অনুরূপ উদাহরণ দেখায় কিভাবে পূর্বে ঢোকানো টেবিল মুছে ফেলতে হয়:

জাভা

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

পাইথন

# 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 ব্যবহার করুন৷

নিম্নলিখিত উদাহরণটি একটি টেবিলের প্রথম টেবিলের ঘরে পাঠ্য সন্নিবেশ করায় এবং একটি টেবিল সারি যোগ করে।

জাভা

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

পাইথন

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 টেবিলে একটি কলাম সন্নিবেশ করতে পারেন:

জাভা

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

পাইথন

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 অবজেক্ট সহ সারণির শুরুর সূচী প্রদান করতে হবে। শুধুমাত্র নির্বাচিত কলামগুলি সংশোধন করতে, অনুরোধে কলাম নম্বরগুলির একটি তালিকা অন্তর্ভুক্ত করুন; টেবিলের সব কলাম পরিবর্তন করতে, একটি খালি তালিকা প্রদান করুন।

নিম্নলিখিত উদাহরণটি একটি টেবিলের কলামের প্রস্থ আপডেট করে, সমস্ত কলামকে 100pts চওড়া করে, তারপর প্রথম কলামের প্রস্থ 200pt-এ সেট করে:

জাভা

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

পাইথন

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 অবজেক্টের সাথে টেবিলের শুরুর সূচী প্রদান করতে হবে। শুধুমাত্র নির্বাচিত সারিগুলি সংশোধন করতে, অনুরোধে সারি নম্বরগুলির একটি তালিকা অন্তর্ভুক্ত করুন; টেবিলের সব সারি পরিবর্তন করতে, একটি খালি তালিকা প্রদান করুন।

নিম্নলিখিত উদাহরণটি একটি টেবিলের 3 নম্বর সারির সর্বনিম্ন উচ্চতা নির্ধারণ করে:

জাভা

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

পাইথন

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