บริการจองโต๊ะ

บริการ Tables อนุญาตให้สคริปต์อ่านและแก้ไขแถวภายใน Google Tables โดยใช้โปรแกรม

ข้อมูลอ้างอิง

ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการนี้ได้ในเอกสารประกอบของ Tables API บริการ Tables จะใช้ออบเจ็กต์ เมธอด และพารามิเตอร์เดียวกับ API สาธารณะเช่นเดียวกับบริการขั้นสูงทั้งหมดใน Apps Script ดูข้อมูลเพิ่มเติมได้ที่วิธีกำหนดลายเซ็นเมธอด

หากต้องการรายงานปัญหาและค้นหาการสนับสนุนอื่นๆ โปรดดูคู่มือการสนับสนุนของ Tables

โค้ดตัวอย่าง

รับรายการตาราง

ตัวอย่างต่อไปนี้แสดงวิธีรับรายการตารางทั้งหมดที่ผู้ใช้เป็นเจ้าของ

// 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
  ]
}

การตอบกลับจะมีตารางได้สูงสุด 20 ตารางโดยค่าเริ่มต้น หากต้องการเรียกข้อมูลตารางเพิ่มเติม ให้แบ่งหน้าคำตอบโดยใช้พารามิเตอร์ 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 สำหรับตารางข้อมูลคือ 100

รับข้อมูลและคำจำกัดความของคอลัมน์ในตาราง

ตัวอย่างต่อไปนี้แสดงวิธีรับข้อมูลและคำจำกัดความของคอลัมน์ของตารางที่เฉพาะเจาะจง

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

ค้นหารหัสตาราง

หากต้องการค้นหารหัสของตาราง ให้เปิดตารางในเว็บแอปตาราง รหัสตารางจะอยู่หลัง /table/ ใน URL ที่ด้านบน

ตัวอย่างด้านล่างแสดงตําแหน่งที่จะพบรหัสตารางใน 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
  ],
}

การตอบกลับจะมีแถวสูงสุด 50 แถวโดยค่าเริ่มต้น หากต้องการดึงข้อมูลแถวเพิ่มเติม ให้แบ่งหน้าคำตอบโดยใช้พารามิเตอร์ 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 คือ 1,000

รับ 1 แถวจากตาราง

ตัวอย่างต่อไปนี้แสดงวิธีอ่านค่าในช่องของ 1 แถวจากตาราง

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

เมื่อคุณระบุค่าที่จะตั้งค่าสําหรับแถวใหม่ คีย์ของออบเจ็กต์คู่คีย์-ค่าต้องตรงกับชื่อของคอลัมน์ตารางที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ทุกประการ เว้นแต่ว่าประเภทของคอลัมน์ที่เขียนได้มีคอลัมน์การค้นหาหรือข้อมูลสรุป คุณสามารถตั้งค่าคอลัมน์การค้นหาและสรุปโดยใช้ค่าสำหรับความสัมพันธ์ คุณต้องอัปเดตค่าสําหรับความสัมพันธ์โดยใช้ชื่อความสัมพันธ์ที่พบในกล่องโต้ตอบความสัมพันธ์

ค่าที่ยอมรับได้สำหรับคอลัมน์จะขึ้นอยู่กับประเภทข้อมูลของคอลัมน์ ดังนี้

ประเภทคอลัมน์ ประเภทข้อมูล (อ่าน) ประเภทอินพุตที่ยอมรับ (เขียน)
ข้อมูลมาตรฐาน
Text String String
Number Number Number
วันที่ Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (ในรูปแบบวันที่ส่วนใหญ่)
ข้อมูลแบบสมบูรณ์
Person String (อีเมล) String (ต้องตรงกับผู้ใช้ Google)
ไฟล์แนบ 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
}
ช่องนี้แก้ไขไม่ได้
Updater String ช่องนี้แก้ไขไม่ได้
เวลาอัปเดต Object {
“seconds”: Number,
“nanos”: Number
}
ช่องนี้แก้ไขไม่ได้

บริการ Tables จะพยายามแปลงค่าที่ระบุให้ตรงกับประเภทคอลัมน์ หากข้อมูลไม่ตรงกัน ระบบจะไม่ตั้งค่าและปล่อยให้ค่าว่างสำหรับแถวใหม่

เพิ่มหลายแถวลงในตาราง

ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มหลายแถวลงในตารางพร้อมกัน

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));
การตอบกลับจะแสดงแถวที่อัปเดตแล้ว

ค้นหารหัสแถว

คุณค้นหารหัสของแถวได้ 2 วิธีดังนี้

รับรหัสแถวด้วย API

เมื่ออ่านแถวจากตาราง คุณสามารถใช้แอตทริบิวต์ name สำหรับแต่ละแถว ซึ่งจะมีรหัสตารางและรหัสแถว

รับรหัสแถวจาก UI ของตาราง
  1. เปิดตารางในเว็บแอปตาราง
  2. คลิกขวาที่แถว
  3. คลิกรับลิงก์ไปยังแถวนี้
  4. วาง URL ไว้ที่ใดที่หนึ่งเพื่อให้คัดลอกรหัสได้
  5. ใน URL รหัสจะอยู่หลัง /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);

กู้คืนแถวที่ลบไปแล้ว

คุณสามารถกู้คืนแถวที่ลบไปแล้วได้จาก UI ของ Tables หากต้องการกู้คืนแถวที่ลบไปแล้ว ให้ทำตามขั้นตอนด้านล่าง

  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