Layanan tabel

Layanan Tables memungkinkan skrip membaca dan mengedit baris secara terprogram dalam Google Tables.

Referensi

Untuk informasi selengkapnya tentang layanan ini, lihat dokumentasi untuk Tables API. Seperti semua layanan lanjutan di Apps Script, layanan Tabel menggunakan objek, metode, dan parameter yang sama dengan API publik. Untuk mengetahui informasi selengkapnya, lihat Cara menentukan tanda tangan metode.

Untuk melaporkan masalah dan menemukan dukungan lainnya, lihat Panduan dukungan tabel.

Kode contoh

Mendapatkan daftar tabel

Contoh berikut menunjukkan cara mendapatkan daftar semua tabel yang dimiliki pengguna.

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

Berikut adalah contoh respons, yang mencakup informasi tentang tabel dan definisi kolom tabel:

{
  “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
  ]
}

Respons menyertakan hingga 20 tabel secara default. Untuk mengambil lebih banyak tabel, buat penomoran halaman respons menggunakan parameter page_token dan page_size, yang ditampilkan di bawah:

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

Nilai maksimum parameter page_size untuk mencantumkan tabel adalah 100.

Mendapatkan informasi tabel dan definisi kolom

Contoh berikut menunjukkan cara mendapatkan informasi tabel dan definisi kolom tertentu.

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

Menemukan ID tabel

Untuk menemukan ID tabel, buka tabel di aplikasi web Tables. Di URL di bagian atas, ID tabel berada tepat setelah /table/.

Contoh di bawah menunjukkan tempat untuk menemukan ID tabel di berbagai URL Tabel:

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

Membaca baris tabel

Contoh berikut menunjukkan cara mendapatkan daftar baris tabel dan membaca nilai kolom.

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"]);
  }
}

Contoh respons ditampilkan di bawah. Responsnya menyertakan daftar baris dalam tabel dan nilai untuk setiap kolom.

{
  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
  ],
}

Respons menyertakan hingga 50 baris secara default. Untuk mengambil lebih banyak baris, buat penomoran halaman respons menggunakan parameter page_token dan page_size, yang ditampilkan di bawah:

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

Jika ada lebih banyak halaman yang tersedia, respons akan menawarkan nextPageToken. Jika tidak, respons tidak ditentukan. Untuk mengambil halaman hasil berikutnya, teruskan nextPageToken ke panggilan daftar berikutnya.

Nilai maksimum parameter page_size adalah 1.000.

Mendapatkan satu baris dari tabel

Contoh berikut menunjukkan cara membaca nilai kolom dari satu baris dari tabel.

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

Memfilter daftar baris

Untuk memfilter daftar baris agar hanya mendapatkan hasil yang Anda minati, gunakan parameter filter. Untuk mengetahui detail selengkapnya tentang sintaksis dan jenis kolom yang didukung oleh filter, lihat dokumentasi API pemfilteran.

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"]);
  }
}

Respons menyertakan baris dengan kolom 'Point of Contact' yang ditetapkan ke '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
  ],
}

Membuat baris dalam tabel

Contoh berikut menunjukkan cara menambahkan baris ke tabel.

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

Saat Anda menentukan nilai yang akan ditetapkan untuk baris baru, kunci pasangan nilai kunci objek harus sama persis dengan judul kolom tabel yang peka huruf besar/kecil, kecuali jika jenis kolom yang dapat ditulis adalah kolom lookup atau summary. Anda menetapkan nilai untuk kolom lookup dan summary menggunakan nilai untuk hubungan. Anda harus memperbarui nilai untuk hubungan menggunakan nama hubungan yang ditemukan di dialog Relationships.

Nilai yang dapat diterima untuk kolom bergantung pada jenis data kolom:

Jenis kolom Jenis data (baca) Jenis input yang dapat diterima (tulis)
Data standar
Teks String String
Number Number Number
Date Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (dalam sebagian besar format tanggal)
Data lengkap
Orang String (alamat email) String (harus cocok dengan pengguna Google)
Lampiran file Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
Kolom ini tidak dapat diubah dengan API.
Lokasi Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
Entri lengkap
Drop-down String String (harus cocok dengan opsi dropdown)
Tag String[] (array opsi tag) String[] (harus cocok dengan opsi tag)
Kotak centang Boolean Boolean
Checklist String[] (array item daftar) String[] (harus cocok dengan item daftar)
Data tertaut
Hubungan String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
Lookup Bergantung pada jenis kolom sumber. Kolom ini tidak dapat diubah dan akan diperbarui dengan nilai tertaut.
Ringkasan Bergantung pada jenis kolom sumber dan fungsi ringkasan:
Jumlah: Number
Maks pada kolom jenis Tanggal: String
Nilai Daftar: Array
Kolom ini tidak dapat diubah.
Kolom kalkulasi
ID Otomatis Number Kolom ini tidak dapat diubah.
Metadata
Pembuat String Kolom ini tidak dapat diubah.
Waktu pembuatan Object {
“seconds”: Number,
“nanos”: Number
}
Kolom ini tidak dapat diubah.
Updater String Kolom ini tidak dapat diubah.
Waktu update Object {
“seconds”: Number,
“nanos”: Number
}
Kolom ini tidak dapat diubah.

Layanan Tables melakukan upaya terbaik untuk mengonversi nilai tertentu agar cocok dengan jenis kolom. Jika data tidak cocok, nilai tidak akan ditetapkan dan akan dibiarkan kosong untuk baris baru.

Menambahkan beberapa baris ke tabel

Contoh berikut menunjukkan cara menambahkan beberapa baris ke tabel secara bersamaan.

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)

Memperbarui baris dalam tabel

Contoh berikut menunjukkan cara memperbarui nilai baris yang ada dalam tabel:

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));
Respons menampilkan baris yang diperbarui.

Menemukan ID baris

Anda dapat menemukan ID untuk baris dengan dua cara:

Mendapatkan ID baris dengan API

Saat membaca baris dari tabel, Anda dapat menggunakan atribut name untuk setiap baris, yang mencakup ID tabel dan baris.

Mendapatkan ID baris dari UI Tabel
  1. Buka tabel di aplikasi web Tables.
  2. Klik kanan baris.
  3. Klik Dapatkan link ke baris ini.
  4. Tempelkan URL di suatu tempat agar Anda dapat menyalin ID.
  5. Dalam URL, ID berada setelah /row/.

Contoh di bawah menunjukkan tempat untuk menemukan ID baris di URL:

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

Memperbarui beberapa baris dalam tabel

Contoh berikut menunjukkan cara memperbarui nilai beberapa baris dalam tabel:

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

Menghapus baris dalam tabel

Contoh berikut menunjukkan cara menghapus satu baris dari tabel:

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

Menghapus beberapa baris dalam tabel

Contoh berikut menunjukkan cara menghapus beberapa baris dalam tabel:

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

Memulihkan baris yang dihapus

Anda dapat memulihkan baris yang dihapus dari UI Tabel. Untuk memulihkan baris yang dihapus, ikuti langkah-langkah di bawah:

  1. Di komputer, buka aplikasi web Tables.
  2. Buka tabel yang ingin Anda pulihkan barisnya.
  3. Di bagian atas, klik Tampilkan baris dan kolom yang dihapus .
  4. Klik Baris yang dihapus.
  5. Di sebelah kanan baris yang ingin dipulihkan, klik Pulihkan dari sampah .

Mendapatkan daftar ruang kerja

Contoh berikut menunjukkan cara mendapatkan daftar semua ruang kerja yang dimiliki pengguna.

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

Berikut adalah contoh log output:

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