Obsługa tabel

Usługa Tables umożliwia skryptom automatyczne odczytywanie i edytowanie wierszy w Tabelach Google.

Dokumentacja

Więcej informacji o tej usłudze znajdziesz w dokumentacji interfejsu Tables API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa Tables korzysta z tych samych obiektów, metod i parametrów co publiczny interfejs API. Więcej informacji znajdziesz w artykule o sposobie określania podpisów metod.

Aby zgłosić problemy i znaleźć inną pomoc, zapoznaj się z przewodnikiem pomocy dotyczącym tabel.

Przykładowy kod

Pobieranie listy tabel

Z przykładu poniżej dowiesz się, 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 znajdziesz 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
  ]
}

Domyślnie odpowiedź zawiera maksymalnie 20 tabel. Aby pobrać więcej tabel, podziel odpowiedzi na strony za pomocą parametrów page_token i page_size, jak pokazano poniżej:

// 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 tabelach z informacjami o aplikacji to 100.

Uzyskiwanie informacji i definicji kolumn w tabeli

Z przykładu poniżej dowiesz się, jak uzyskać informacje o konkretnej tabeli i definicję kolumn.

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

Znajdź identyfikator tabeli

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

Poniższy przykład 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

Z przykładu poniżej dowiesz się, 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 każdego pola.

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

Domyślnie odpowiedź zawiera maksymalnie 50 wierszy. Aby pobrać więcej wierszy, podziel odpowiedzi na strony za pomocą parametrów page_token i page_size, jak pokazano poniżej:

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 dostępnych jest więcej stron, w odpowiedzi wyświetli się nextPageToken. W przeciwnym razie odpowiedź będzie niezdefiniowana. Aby pobrać następną stronę wyników, przekaż element nextPageToken do następnego wywołania listy.

Maksymalna wartość parametru page_size to 1000.

Pobierz jeden wiersz z tabeli

Z przykładu poniżej dowiesz się, jak odczytywać wartości pól w jednym wierszu 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 i uzyskać tylko interesujące Cię wyniki, 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, w których kolumna „Osoba kontaktowa” jest ustawiona na „jan.kowalski@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

Z przykładu poniżej dowiesz się, 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ślisz wartości do ustawienia w nowym wierszu, klucze par klucz-wartość obiektu muszą być dokładnie takie same jak tytuły kolumn tabeli z rozróżnianiem wielkości liter, chyba że typem kolumny z możliwością zapisu jest kolumna wyszukiwanie lub podsumowanie. Wartości w kolumnach wyszukiwania i podsumowania ustawia się przy użyciu wartości relacji. Wartość relacji musisz zaktualizować przy użyciu nazwy relacji dostępnej w oknie Relacje.

Dopuszczalne wartości w kolumnie zależą od jej typu danych:

Typ kolumny Typ danych (odczyt) Dopuszczalne typy danych wejściowych (zapis)
Dane standardowe
Tekst String String
Number Number Number
Data Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (w większości formatów daty)
Dane rozszerzone
Person String (adres e-mail) String (musi odpowiadać użytkownikowi Google)
Załącznik Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
Tego pola nie można modyfikować za pomocą interfejsu API.
Lokalizacja Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
Bogaty wpis
Menu String String (musi odpowiadać opcji menu)
Tagi String[] (tablica opcji tagów) String[] (musi pasować do opcji tagu)
Pole wyboru Boolean Boolean
Lista kontrolna String[] (tablica elementów listy) String[] (musi pasować do elementów listy)
Połączone dane
Relacja String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
Wyszukaj Zależy od typu kolumny źródłowej. Tego pola nie można zmienić. Zostanie uzupełnione o połączone wartości.
Podsumowanie Zależy od typu kolumny źródłowej i funkcji podsumowania:
Liczba: Number
Maksymalna wartość w kolumnie z typem daty: String
Wartości listy: Array
Tego pola nie można zmienić.
Pole obliczeniowe
Auto-ID Number Tego pola nie można modyfikować.
Metadane
Twórca String Tego pola nie można modyfikować.
Czas utworzenia Object {
“seconds”: Number,
“nanos”: Number
}
Tego pola nie można modyfikować.
Aktualizujący String Tego pola nie można modyfikować.
Czas aktualizacji Object {
“seconds”: Number,
“nanos”: Number
}
Tego pola nie można modyfikować.

Usługa Tables w miarę możliwości próbuje przekonwertować podane wartości tak, aby pasowały do typu kolumny. Jeśli dane nie są zgodne, wartość nie zostanie ustawiona i w nowych wierszach będzie pusta.

Dodawanie wielu wierszy do tabeli

Z przykładu poniżej dowiesz się, jak jednocześnie dodać do tabeli wiele wierszy.

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

Z przykładu poniżej dowiesz się, jak zaktualizować wartości w istniejącym wierszu 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:

Uzyskiwanie identyfikatora wiersza za pomocą interfejsu API

Odczytując wiersze z tabeli, możesz w każdym wierszu użyć atrybutu name, który obejmuje tabelę i identyfikatory wierszy.

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

Poniższy przykład pokazuje, gdzie w adresie URL znaleźć identyfikator wiersza:

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

Aktualizowanie wielu wierszy w tabeli

Z przykładu poniżej dowiesz się, jak zaktualizować wartości w wielu wierszach 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ąć z tabeli pojedynczy wiersz:

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ąć wiele wierszy z 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);

Przywróć usunięte wiersze

Usunięte wiersze możesz przywrócić w interfejsie Tables. Aby przywrócić usunięty wiersz, wykonaj te czynności:

  1. Otwórz aplikację internetową Tables na komputerze.
  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

Z przykładu poniżej dowiesz się, 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);
    }
  }
}

Oto przykład logów wyjściowych:

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