টেবিল পরিষেবা

টেবিল পরিষেবা স্ক্রিপ্টগুলিকে Google টেবিলের মধ্যে সারিগুলি প্রোগ্রাম্যাটিকভাবে পড়তে এবং সম্পাদনা করতে দেয়।

তথ্যসূত্র

এই পরিষেবা সম্পর্কে আরও তথ্যের জন্য, Tables API-এর ডকুমেন্টেশন দেখুন। Apps Script-এর সমস্ত উন্নত পরিষেবার মতো, Tables পরিষেবাটি পাবলিক API-এর মতো একই বস্তু, পদ্ধতি এবং পরামিতি ব্যবহার করে। আরও তথ্যের জন্য, পদ্ধতি স্বাক্ষর কীভাবে নির্ধারণ করা হয় তা দেখুন।

সমস্যাগুলি রিপোর্ট করতে এবং অন্যান্য সহায়তা পেতে, টেবিল সহায়তা নির্দেশিকা দেখুন।

নমুনা কোড

টেবিলের একটি তালিকা পান

নিম্নলিখিত নমুনাটি দেখায় যে ব্যবহারকারীর মালিকানাধীন সমস্ত টেবিলের একটি তালিকা কীভাবে পেতে হয়।

// Get list of tables the user owns
var response = Area120Tables.Tables.list();
if (response) {
  var tables = response.tables;
  Logger.log(JSON.stringify(tables[0]));
}

নীচে প্রতিক্রিয়ার একটি উদাহরণ দেওয়া হল, যেখানে টেবিল এবং টেবিল কলামের সংজ্ঞা সম্পর্কে তথ্য অন্তর্ভুক্ত রয়েছে:

{
  “tables”: [
    {
      "name": "tables/b6prMlkWyekbsCFeX6IOdu",
      "displayName": "Applicants"
      "columns": [
        {"id": "9qVCMvgh", "name": "Name", "dataType": "text"},
        {"id": "aD8dDXAS", "name": "Email", "dataType": "text"},
        {"id": "9pc0kdNX", "name": "Experience", "dataType": "tags_list",
          "labels": [
            {"id": "aAqi235Q", "name": "Android"},
            {"id": "bULZ4OK3", "name": "iOS"},
          ],
        },
        {"id": "8abYfCyo", "name": "Home Address", "dataType": "location"},
        {"id": "8ccERJ2v", "name": "Doc", "dataType": "file_attachment_list"},
        {"id": "aFb-tXf1", "name": "Stage", "dataType": "dropdown",
          "labels": [
            {"id": "8Hcb-Pxe", "name": "Applied"},
            {"id": "aM3EDGFf", "name": "Phone Screen"},
            {"id": "abyFLVKU", "name": "Onsite Interview"},
          ],
        },
        {"id": "9yKUThTi", "name": "Recruiter", "dataType": "person_list"},
        {"id": "a5c9WPVA", "name": "Interview Date", "dataType": "date"},
        {"id": "bqtbYPtH", "name": "Created", "dataType": "create_timestamp"},
        {"id": "bWR08pBv", "name": "Updated", "dataType": "update_timestamp"}
      ]
    },
    ... // more tables
  ]
}

ডিফল্টরূপে, প্রতিক্রিয়াটিতে ২০টি পর্যন্ত টেবিল থাকে। আরও টেবিল পুনরুদ্ধার করতে, নীচে দেখানো page_token এবং page_size প্যারামিটার ব্যবহার করে প্রতিক্রিয়াগুলিকে পৃষ্ঠাঙ্কিত করুন:

// Paginate through a list of tables
var pageSize = 1000;
var pageToken;
var response = Area120Tables.Tables.list({page_size: pageSize});
while (response) {
  var tables = response.tables;

  // get next page of tables
  pageToken = response.nextPageToken;
  if (!pageToken) {
    response = undefined;
  } else {
    response = Area120Tables.Tables.list(tableRequest, {page_size: pageSize, page_token: pageToken});
  }
}

তালিকাভুক্ত টেবিলের জন্য page_size প্যারামিটারের সর্বোচ্চ মান হল ১০০।

একটি টেবিলের তথ্য এবং কলামের সংজ্ঞা পান

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি নির্দিষ্ট টেবিলের তথ্য এবং কলামের সংজ্ঞা পেতে হয়।

var tableID = "TABLE_ID";  // ID for the table
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.get(tableName);
Logger.log(JSON.stringify(response));

টেবিল আইডি খুঁজুন

একটি টেবিলের আইডি খুঁজে পেতে, টেবিল ওয়েব অ্যাপে টেবিলটি খুলুন। উপরের URL-এ, টেবিল আইডিটি /table/ ঠিক পরে রয়েছে।

নিচের নমুনাটি বিভিন্ন টেবিল URL-এ টেবিল আইডি কোথায় পাওয়া যাবে তা দেখায়:

https://tables.area120.google.com/u/0/workspace/abcdefghijklmnop/table/TABLE_ID
https://tables.area120.google.com/u/0/table/TABLE_ID
https://tables.area120.google.com/u/0/table/TABLE_ID/view/abcedfghijk

একটি টেবিলের সারি পড়ুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি টেবিলের সারির তালিকা পেতে হয় এবং ক্ষেত্রের মানগুলি পড়তে হয়।

var tableID = "TABLE_ID";  // ID for the table
var pageToken;
var pageSize = 1000;
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.Rows.list(tableName)
if (response) {
  for (var i = 0, rows = response.rows; i < rows.length; i++) {
    if (!rows[i].values) { // If blank row, keep going
      Logger.log("Empty row");
      continue;
    }
    Logger.log(rows[i].values);
    Logger.log(rows[i].values["Description"]);
  }
}

নিচে একটি নমুনা প্রতিক্রিয়া দেখানো হল। প্রতিক্রিয়াটিতে টেবিলের সারির একটি তালিকা এবং প্রতিটি ক্ষেত্রের মান অন্তর্ভুক্ত রয়েছে।

{
  rows: [
    {
      "name": "tables/TABLE_ID/rows/a6tvEPska7l8rAlHlSdOLb",
      "values": {
        "Thing to do": "First item",  // Text
        "Size": 100,                  // Number
        "ETA":{"month":12,"day":3,"year":2021}  // Date
        "Stage": "Completed",         // Dropdown
        "Checklist": [                // Checklist
          "Do this",
          "then this"
        ],
        "Labels": [                   // Tags
          "Green",
          "Purple"
        ],
        "Address": {                  // Location
          "latitude": 40.740726470947266,
          "longitude": -74.00206756591797,
          "address": "3014 Watson Lane, Sattler, TX 78130, USA"
        },
        "Archive?": true,             // Checkbox
        "ID#": 1,                     // Auto ID
        "Row creator": "liz@gmail.com",  // Creator / Updater / Person
        "Last updated": "October 7, 2020 6:30:38 PM EDT",
        "Created on": "March 2, 2020 1:07:54 PM EST",
      }
    },
    ... // More rows
  ],
}

ডিফল্টরূপে, প্রতিক্রিয়াটিতে সর্বাধিক ৫০টি সারি থাকে। আরও সারি পুনরুদ্ধার করতে, নীচে দেখানো page_token এবং page_size প্যারামিটার ব্যবহার করে প্রতিক্রিয়াগুলিকে পৃষ্ঠাঙ্কিত করুন:

var pageToken;
var pageSize = 1000;
var response = Area120Tables.Tables.Rows.list(tableName, {page_size: pageSize});
while (response) {
  var rows = response.rows;

  // read next page of rows
  pageToken = response.nextPageToken;
  if (!pageToken) {
    response = undefined;
  } else {
    response = Area120Tables.Tables.Rows.list(tableName, {page_size: pageSize, page_token: pageToken});
  }
}

যদি আরও পৃষ্ঠা উপলব্ধ থাকে, তাহলে প্রতিক্রিয়াটি একটি nextPageToken অফার করবে। অন্যথায়, প্রতিক্রিয়াটি অনির্ধারিত থাকবে। ফলাফলের পরবর্তী পৃষ্ঠা পুনরুদ্ধার করতে, nextPageToken কে পরবর্তী তালিকা কলে পাঠান।

page_size প্যারামিটারের সর্বোচ্চ মান হল ১,০০০।

একটি টেবিল থেকে একটি সারি পান

নিচের নমুনাটি দেখায় কিভাবে একটি টেবিল থেকে একটি সারির ক্ষেত্রের মান পড়তে হয়।

var tableID = "TABLE_ID";  // ID for the table
var tableName = "tables/" + tableID;
var rowID = "ROW_ID";  // ID for the row to fetch
var rowName = tableName + "/rows/" + rowID;    // Construct row name
var response = Area120Tables.Tables.Rows.get(rowName)
if (response) {
  Logger.log(response.values);
}

সারির তালিকা ফিল্টার করুন

আপনার আগ্রহের ফলাফল পেতে সারিগুলির তালিকা ফিল্টার করতে, filter প্যারামিটার ব্যবহার করুন। ফিল্টার দ্বারা সমর্থিত সিনট্যাক্স এবং কলামের ধরণ সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে ফিল্টারিং API ডকুমেন্টেশনটি দেখুন।

var tableID = "TABLE_ID";  // ID for the table
var pageToken;
var pageSize = 1000;
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.Rows.list(tableName, {filter:"values.\"Point of Contact\"=\"john.doe@gmail.com\""})
if (response) {
  for (var i = 0, rows = response.rows; i < rows.length; i++) {
    if (!rows[i].values) { // If blank row, keep going
      Logger.log("Empty row");
      continue;
    }
    Logger.log(rows[i].values);
    Logger.log(rows[i].values["Description"]);
  }
}

প্রতিক্রিয়াটিতে 'যোগাযোগের বিন্দু' কলামের সারিগুলি 'john.doe@gmail.com' এ সেট করা আছে।

{
  rows: [
    {
      "name": "tables/TABLE_ID/rows/a6tvEPska7l8rAlHlSdOLb",
      "values": {
        "Thing to do": "Second item",  // Text
        "Size": 110,                  // Number
        "ETA":{"month":12,"day":3,"year":2021}  // Date

        "Stage": "Completed",         // Dropdown
        "Checklist": [                // Checklist
          "Do this",
          "then this",
          "finally this"
        ],
        "Labels": [                   // Tags
          "Green",
          "Orange"
        ],
        "Address": {                  // Location
          "latitude": 45.740726470947266,
          "longitude": -88.00206756591797,
          "address": "6027 Holmes Lane, Sattler, TX 78130, USA"
        },
        "Archive?": false,             // Checkbox
        "ID#": 2,                     // Auto ID
        "Point of Contact": "john.doe@gmail.com",  // Person
        "Last updated": "October 9, 2020 6:35:38 PM EDT",
        "Created on": "March 10, 2020 1:07:54 PM EST",
      }
    },
    ... // More rows
  ],
}

একটি টেবিলে একটি সারি তৈরি করুন

নিচের নমুনাটি দেখায় কিভাবে একটি টেবিলে একটি সারি যোগ করতে হয়।

var tableID = "TABLE_ID";  // ID for the table
var tableName = "tables/" + tableID;
var values = {
    "Number Column": 100,
    "Text Column 2": "hello world",
    "Date Column 3": new Date(),
    "Dropdown Col.": "Dropdown value",
};
Area120Tables.Tables.Rows.create({values: values}, tableName);

যখন আপনি নতুন সারির জন্য সেট করার জন্য মানগুলি নির্দিষ্ট করেন, তখন অবজেক্ট কী-মান জোড়ার কীগুলি অবশ্যই টেবিল কলামের কেস-সংবেদনশীল শিরোনামের সাথে হুবহু মিলবে, যদি না লেখার যোগ্য কলামের ধরণটি একটি লুকআপ বা সারাংশ কলাম হয়। আপনি সম্পর্কের মান ব্যবহার করে লুকআপ এবং সারাংশ কলামের জন্য মান সেট করেন। সম্পর্ক ডায়ালগে পাওয়া সম্পর্কের নাম ব্যবহার করে সম্পর্কের মান আপডেট করতে হবে।

একটি কলামের গ্রহণযোগ্য মান কলামের ডেটা টাইপের উপর নির্ভর করে:

কলামের ধরণ ডেটা টাইপ (পড়া) গ্রহণযোগ্য ইনপুট প্রকার (লেখা)
স্ট্যান্ডার্ড ডেটা
টেক্সট String String
সংখ্যা Number Number
তারিখ Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date , String (বেশিরভাগ তারিখ ফর্ম্যাটে)
সমৃদ্ধ তথ্য
ব্যক্তি String (ইমেল ঠিকানা) String (গুগল ব্যবহারকারীর সাথে মিলতে হবে)
ফাইল সংযুক্তি Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
এই ক্ষেত্রটি API দিয়ে পরিবর্তন করা যাবে না।
স্থান Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
সমৃদ্ধ এন্ট্রি
ড্রপডাউন String String (ড্রপডাউন বিকল্পগুলির সাথে মিলতে হবে)
ট্যাগ String[] (ট্যাগ বিকল্পের অ্যারে) String[] (ট্যাগ বিকল্পগুলির সাথে মিলতে হবে)
চেকবক্স Boolean Boolean
চেকলিস্ট String[] (তালিকা আইটেমের অ্যারে) String[] (তালিকার আইটেমগুলির সাথে মিলতে হবে)
লিঙ্ক করা ডেটা
সম্পর্ক String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
লুকআপ উৎস কলামের ধরণের উপর নির্ভর করে। এই ক্ষেত্রটি পরিবর্তন করা যাবে না এবং লিঙ্ক করা মান সহ আপডেট করা হবে।
সারাংশ উৎস কলামের ধরণ এবং সারাংশ ফাংশনের উপর নির্ভর করে:
গণনা : Number
তারিখ-ধরণের কলামে সর্বোচ্চ : String
তালিকার মান : Array
এই ক্ষেত্রটি পরিবর্তন করা যাবে না।
গণনা করা ক্ষেত্র
অটো আইডি Number এই ক্ষেত্রটি পরিবর্তন করা যাবে না।
মেটাডেটা
স্রষ্টা String এই ক্ষেত্রটি পরিবর্তন করা যাবে না।
সময় তৈরি করুন Object {
“seconds”: Number,
“nanos”: Number
}
এই ক্ষেত্রটি পরিবর্তন করা যাবে না।
আপডেটার String এই ক্ষেত্রটি পরিবর্তন করা যাবে না।
আপডেটের সময় Object {
“seconds”: Number,
“nanos”: Number
}
এই ক্ষেত্রটি পরিবর্তন করা যাবে না।

টেবিল পরিষেবাটি প্রদত্ত মানগুলিকে কলামের ধরণের সাথে মেলে রূপান্তর করার জন্য সর্বোত্তম প্রচেষ্টা করে। যদি ডেটা মেলে না, তবে এটি মান সেট করবে না এবং নতুন সারির জন্য এটি ফাঁকা রাখবে।

একটি টেবিলে একাধিক সারি যোগ করুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একই সময়ে একটি টেবিলে একাধিক সারি যোগ করতে হয়।

var tableID = TABLE_ID;
var tableName = "tables/" + tableID;
Area120Tables.Tables.Rows.batchCreate({requests: [
  {row:{values:{"Col 1":"Sample",  "Col 2":"One",   "Col 3":"A"}}},
  {row:{values:{"Col 1":"Example", "Col 2":"Two",   "Col 3":"B"}}},
  {row:{values:{"Col 1":"Test",    "Col 2":"Three", "Col 3":"C"}}},
]}, tableName)

একটি টেবিলের একটি সারি আপডেট করুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি টেবিলের বিদ্যমান সারির মান আপডেট করতে হয়:

var rowName = "tables/TABLE_ID/rows/ROW_ID";
var values = {"Column": "HELLO"};
var response = Area120Tables.Tables.Rows.patch({values: values}, rowName);
Logger.log("Update row:" + JSON.stringify(response));
প্রতিক্রিয়াটি আপডেট করা সারিটি ফেরত দেয়।

সারি আইডি খুঁজুন

আপনি দুটি উপায়ে একটি সারির জন্য আইডি খুঁজে পেতে পারেন:

API ব্যবহার করে সারি আইডি পান

যখন আপনি একটি টেবিল থেকে সারি পড়েন, তখন আপনি প্রতিটি সারির জন্য name অ্যাট্রিবিউট ব্যবহার করতে পারেন, যার মধ্যে টেবিল এবং সারি আইডি অন্তর্ভুক্ত থাকে।

টেবিল UI থেকে সারি আইডি পান
  1. Tables ওয়েব অ্যাপে টেবিলটি খুলুন।
  2. সারিতে ডান ক্লিক করুন।
  3. এই সারির লিঙ্ক পান ক্লিক করুন।
  4. ইউআরএলটি কোথাও পেস্ট করুন যাতে আপনি আইডিটি কপি করতে পারেন।
  5. URL-এর মধ্যে, IDটি /row/ পরে থাকে।

নিচের নমুনাটি URL-এ সারি আইডি কোথায় পাওয়া যাবে তা দেখায়:

https://tables.area120.google.com/table/TABLE_ID/row/ROW_ID

একটি টেবিলে একাধিক সারি আপডেট করুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি টেবিলের একাধিক সারির মান আপডেট করতে হয়:

var tableID = TABLE_ID;
var tableName = "tables/" + tableID;
var requests = [
  {row: {name: "tables/TABLE_ID/rows/ROW_ID_1", values: {"Column": "WORLD"}}},
  {row: {name: "tables/TABLE_ID/rows/ROW_ID_2", values: {"Column": "WORLD"}}},
  {row: {name: "tables/TABLE_ID/rows/ROW_ID_3", values: {"Column": "WORLD"}}},
];
var response = Area120Tables.Tables.Rows.batchUpdate({requests: requests}, tableName);
Logger.log("Batch update rows:" + JSON.stringify(response));

একটি টেবিলের একটি সারি মুছুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি টেবিল থেকে একটি একক সারি মুছে ফেলা যায়:

var rowName = "tables/TABLE_ID/rows/ROW_ID";
var response = Area120Tables.Tables.Rows.remove(rowName);
Logger.log("Delete row:" + JSON.stringify(response));

একটি টেবিলের একাধিক সারি মুছুন

নিম্নলিখিত নমুনাটি দেখায় কিভাবে একটি টেবিলের একাধিক সারি মুছে ফেলা যায়:

var tableID = TABLE_ID;
var tableName = "tables/" + tableID;
var rowNames = [
  "tables/TABLE_ID/rows/ROW_ID_1",
  "tables/TABLE_ID/rows/ROW_ID_2",
  "tables/TABLE_ID/rows/ROW_ID_3",
];
Area120Tables.Tables.Rows.batchDelete({names: rowNames}, tableName);

মুছে ফেলা সারি পুনরুদ্ধার করুন

আপনি Tables UI থেকে মুছে ফেলা সারিগুলি পুনরুদ্ধার করতে পারেন। মুছে ফেলা সারি পুনরুদ্ধার করতে, নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার কম্পিউটারে, Tables ওয়েব অ্যাপটি খুলুন।
  2. আপনি যে টেবিলে সারি পুনরুদ্ধার করতে চান সেটি খুলুন।
  3. উপরে, মুছে ফেলা সারি এবং কলামের দেখান ক্লিক করুন।
  4. মুছে ফেলা সারিগুলিতে ক্লিক করুন।
  5. আপনি যে সারির পুনরুদ্ধার করতে চান তার ডানদিকে, ট্র্যাশ থেকে পুনরুদ্ধার করুন ক্লিক করুন।

কর্মক্ষেত্রের একটি তালিকা পান

নিম্নলিখিত নমুনাটি দেখায় যে ব্যবহারকারীর মালিকানাধীন সমস্ত কর্মক্ষেত্রের তালিকা কীভাবে পেতে হয়।

// Get list of workspaces the user owns and lists the tables in each one:
var response = Area120Tables.Workspaces.list();
if (response) {
  var workspaces = response.workspaces;
  for (var workspace of workspaces){
    Logger.log(workspace.displayName);
    for (var table of workspace.tables) {
      Logger.log('Table: ' + table);
    }
  }
}

নিচে আউটপুট লগের একটি উদাহরণ দেওয়া হল:

My Workspace
Table: Table 1
Table: Table 2
My TODOs
Table: Tasks