Obsługa tabel

Usługa Tables umożliwia skryptom odczytywanie i edytowanie wierszy w tabeli Google za pomocą kodu.

Dokumentacja

Więcej informacji o tej usłudze znajdziesz w dokumentacji interfejsu Tables API. Podobnie jak wszystkie zaawansowane usługi w Apps Script, usługa Tables używa tych samych obiektów, metod i parametrów co publiczny interfejs API. Więcej informacji znajdziesz w artykule Jak określane są sygnatury metod.

Aby zgłaszać problemy i uzyskać inną pomoc, zapoznaj się z przewodnikiem pomocy dotyczącym Tables.

Przykładowy kod

Pobieranie listy tabel

Ten przykład pokazuje, jak uzyskać listę wszystkich tabel należących do użytkownika.

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

Poniżej znajduje się przykład odpowiedzi, który zawiera informacje o tabeli i definicjach kolumn tabeli:

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

Odpowiedź domyślnie zawiera do 20 tabel. Aby pobrać więcej tabel, pogrupuj odpowiedzi za pomocą parametrów page_token i 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});
  }
}

Maksymalna wartość parametru page_size w przypadku tabel list jest równa 100.

Pobieranie informacji o tabeli i definicji kolumn

Poniższy przykład pokazuje, jak uzyskać informacje o określonej tabeli i definicję kolumny.

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

Znajdowanie identyfikatora tabeli

Aby znaleźć identyfikator tabeli, otwórz ją w aplikacji internetowej Tabele. W adresie URL u góry identyfikator tabeli znajduje się zaraz po /table/.

Przykład poniżej pokazuje, gdzie znaleźć identyfikator tabeli w różnych adresach 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

odczytywanie wierszy tabeli,

Ten przykład pokazuje, jak uzyskać listę wierszy tabeli i odczytać wartości pól.

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

Poniżej znajdziesz przykładową odpowiedź. Odpowiedź zawiera listę wierszy w tabeli oraz wartości poszczególnych pól.

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

Odpowiedź domyślnie zawiera do 50 wierszy. Aby pobrać więcej wierszy, pogrupuj odpowiedzi za pomocą parametrów page_token i 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});
  }
}

Jeśli jest więcej dostępnych stron, odpowiedź zawiera nextPageToken. W przeciwnym razie odpowiedź jest niezdefiniowana. Aby pobrać kolejną stronę wyników, przekaż parametr nextPageToken do następnego wywołania listy.

Maksymalna wartość parametru page_size to 1000.

Pobieranie jednego wiersza z tabeli

Poniższy przykład pokazuje, jak odczytać wartości pól z jednego wiersza tabeli.

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

Filtrowanie listy wierszy

Aby przefiltrować listę wierszy, aby uzyskać tylko te wyniki, które Cię interesują, użyj parametru filter. Więcej informacji o składni i typach kolumn obsługiwanych przez filtr znajdziesz w dokumentacji interfejsu API do filtrowania.

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

Odpowiedź zawiera wiersze z wartością w kolumnie „Osoba kontaktowa” ustawioną na „janusz.nowak@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
  ],
}

Tworzenie wiersza w tabeli

Ten przykład pokazuje, jak dodać wiersz do tabeli.

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

Gdy określasz wartości do ustawienia w nowym wierszu, klucze par klucz-wartość obiektu muszą dokładnie odpowiadać tytułom kolumn tabeli z uwzględnieniem wielkości liter, chyba że typ kolumny umożliwiającej zapisywanie danych to wyszukiwanie lub podsumowanie. Wartości kolumn wyszukiwania i podsumowania ustawiasz za pomocą wartości relacji. Musisz zaktualizować wartość relacji, używając nazwy relacji w oknie Relacje.

Akceptowane wartości kolumny zależą od jej typu danych:

Typ kolumny Typ danych (odczyt): Akceptowane typy danych wejściowych (zapisywanie):
Dane standardowe
Text String String
Number Number Number
Data Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (w większości formatów dat)
Dane rozszerzone
Person String (adres e-mail) String (musi być zgodny z użytkownikiem Google)
Załącznik pliku Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
Tego pola nie można zmodyfikować za pomocą interfejsu API.
Lokalizacja Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
Wpis z elementami rozszerzonymi
Menu String String (musi być zgodny z opcjami w menu)
Tagi String[] (tabelka opcji tagu) String[] (musi być zgodny z opcjami tagu)
Pole wyboru Boolean Boolean
Lista kontrolna String[] (tabelka elementów listy) String[] (musi pasować do elementów listy)
Połączone dane
Relacja String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
Wyszukiwanie Zależy od typu kolumny źródłowej. Tego pola nie można zmodyfikować. Zostanie ono zaktualizowane zgodnie z połączoną wartością.
Podsumowanie Zależy od typu kolumny źródłowej i funkcji podsumowania:
Liczba: Number
Maksimum w kolumnie typu Data: String
Wartości listy: Array
Tego pola nie można zmienić.
Pole obliczeniowe
Auto ID Number Tego pola nie można zmienić.
Metadane
Twórca String Tego pola nie można zmodyfikować.
Czas utworzenia Object {
“seconds”: Number,
“nanos”: Number
}
Tego pola nie można zmienić.
Updater String Tego pola nie można zmodyfikować.
Czas aktualizacji Object {
“seconds”: Number,
“nanos”: Number
}
Tego pola nie można zmienić.

Usługa Tables dokłada wszelkich starań, aby przekonwertować podane wartości tak, aby pasowały do typu kolumny. Jeśli dane się nie zgadzają, wartość nie zostanie ustawiona i w przypadku nowych wierszy pozostanie ona pusta.

Dodawanie wielu wierszy do tabeli

Ten przykład pokazuje, jak dodać kilka wierszy do tabeli jednocześnie.

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)

Aktualizowanie wiersza w tabeli

Ten przykład pokazuje, jak zaktualizować wartości dotychczasowego wiersza w tabeli:

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));
Odpowiedź zwraca zaktualizowany wiersz.

Znajdowanie identyfikatora wiersza

Identyfikator wiersza możesz znaleźć na 2 sposoby:

Pobieranie identyfikatora wiersza za pomocą interfejsu API

Podczas odczytu wierszy z tabeli możesz używać atrybutu name dla każdego wiersza, który zawiera identyfikatory tabeli i wierszy.

Pobieranie identyfikatora wiersza z interfejsu tabeli
  1. Otwórz tabelę w internetowej aplikacji Tables.
  2. Kliknij wiersz prawym przyciskiem myszy.
  3. Kliknij Pobierz link do tego wiersza.
  4. Wklej adres URL w dostępnym miejscu, aby móc skopiować identyfikator.
  5. W adresie URL identyfikator znajduje się po /row/.

Przykład poniżej pokazuje, gdzie w adresie URL znajduje się identyfikator wiersza:

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

Aktualizowanie wielu wierszy w tabeli

Ten przykład pokazuje, jak zaktualizować wartości wielu wierszy w tabeli:

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

Usuwanie wiersza w tabeli

Ten przykład pokazuje, jak usunąć pojedynczy wiersz z tabeli:

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

Usuwanie wielu wierszy w tabeli

Ten przykład pokazuje, jak usunąć kilka wierszy w tabeli:

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

Przywracanie usuniętych wierszy

Możesz przywrócić usunięte wiersze z poziomu interfejsu tabel. Aby przywrócić usunięte wiersze:

  1. Na komputerze otwórz aplikację internetową Tables.
  2. Otwórz tabelę, w której chcesz przywrócić wiersze.
  3. U góry kliknij Pokaż usunięte wiersze i kolumny .
  4. Kliknij Usunięte wiersze.
  5. Po prawej stronie wiersza, który chcesz przywrócić, kliknij Przywróć z kosza .

Pobieranie listy obszarów roboczych

Ten przykład pokazuje, jak uzyskać listę wszystkich obszarów roboczych należących do użytkownika.

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

Poniżej znajdziesz przykład dzienników wyjściowych:

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