গুগল ডক্স এপিআই আপনাকে টেবিলের বিষয়বস্তু সম্পাদনা করার অনুমতি দেয়। আপনি যে ক্রিয়াকলাপগুলি সম্পাদন করতে পারেন তার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- সারি, কলাম, অথবা সম্পূর্ণ টেবিল সন্নিবেশ করান এবং মুছুন।
- টেবিল কোষে বিষয়বস্তু সন্নিবেশ করান।
- টেবিল কোষ থেকে বিষয়বস্তু পড়ুন।
- কলামের বৈশিষ্ট্য এবং সারির ধরণ পরিবর্তন করুন।
গুগল ডক্সে টেবিলগুলিকে ডকুমেন্টে এক ধরণের স্ট্রাকচারাল এলিমেন্ট হিসেবে উপস্থাপন করা হয়। প্রতিটি টেবিলে টেবিলের সারির একটি তালিকা থাকে যেখানে প্রতিটি সারিতে টেবিল কোষের একটি তালিকা থাকে। সমস্ত স্ট্রাকচারাল এলিমেন্টের মতো, টেবিলের শুরু এবং শেষের সূচী থাকে, যা ডকুমেন্টে টেবিলের অবস্থান নির্দেশ করে। ইনডেক্সিং সম্পর্কে আরও তথ্যের জন্য কাঠামোটি দেখুন। টেবিলের বৈশিষ্ট্যগুলিতে কলামের প্রস্থ এবং প্যাডিংয়ের মতো অনেক স্টাইল উপাদান অন্তর্ভুক্ত থাকে।
নিম্নলিখিত 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 Docs 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 অবজেক্ট সহ প্রদান করতে হবে। শুধুমাত্র নির্বাচিত কলামগুলি পরিবর্তন করতে, অনুরোধে কলাম সংখ্যার একটি তালিকা অন্তর্ভুক্ত করুন; টেবিলের সমস্ত কলাম পরিবর্তন করতে, একটি খালি তালিকা প্রদান করুন।
নিচের উদাহরণটি একটি টেবিলের কলামের প্রস্থ আপডেট করে, সমস্ত কলামকে ১০০ পয়েন্ট প্রস্থে সেট করে, তারপর প্রথম কলামের প্রস্থ ২০০ পয়েন্টে সেট করে:
জাভা
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 অবজেক্ট সহ প্রদান করতে হবে। শুধুমাত্র নির্বাচিত সারি পরিবর্তন করতে, অনুরোধে সারি সংখ্যার একটি তালিকা অন্তর্ভুক্ত করুন; টেবিলের সমস্ত সারি পরিবর্তন করতে, একটি খালি তালিকা প্রদান করুন।
নিচের উদাহরণটি একটি টেবিলের ৩য় সারির সর্বনিম্ন উচ্চতা নির্ধারণ করে:
জাভা
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()