Tischservice

Mit dem Tables-Dienst können Skripts Zeilen in Google Tables programmatisch lesen und bearbeiten.

Referenz

Weitere Informationen zu diesem Dienst finden Sie in der Dokumentation zur Tables API. Wie alle erweiterten Dienste in Apps Script verwendet der Tables-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API. Weitere Informationen finden Sie unter So werden Methodensignaturen ermittelt.

Informationen zum Melden von Problemen und zur Unterstützung bei weiteren Fragen finden Sie im Supportleitfaden für Tabellen.

Beispielcode

Liste mit Tabellen abrufen

Im folgenden Beispiel wird gezeigt, wie Sie eine Liste aller Tabellen des Nutzers abrufen.

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

Im Folgenden finden Sie ein Beispiel für die Antwort, die Informationen zu den Tabellen- und Tabellenspaltendefinitionen enthält:

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

Die Antwort enthält standardmäßig bis zu 20 Tabellen. Wenn Sie weitere Tabellen abrufen möchten, paginieren Sie die Antworten mithilfe der Parameter page_token und page_size wie unten gezeigt:

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

Der Maximalwert des Parameters page_size zum Auflisten von Tabellen beträgt 100.

Tabelleninformationen und Spaltendefinitionen abrufen

Im folgenden Beispiel wird gezeigt, wie Sie die Informationen und die Spaltendefinition einer bestimmten Tabelle abrufen.

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

Tabellen-ID ermitteln

Um die ID einer Tabelle zu ermitteln, öffnen Sie die Tabelle in der Web-App von Tabellen. In der URL oben befindet sich die Tabellen-ID direkt nach /table/.

Im folgenden Beispiel sehen Sie, wo Sie die Tabellen-ID in verschiedenen Tables-URLs finden:

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

Zeilen einer Tabelle lesen

Im folgenden Beispiel wird gezeigt, wie Sie eine Liste der Zeilen einer Tabelle abrufen und die Feldwerte lesen.

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

Unten sehen Sie eine Beispielantwort. Die Antwort enthält eine Liste der Zeilen in der Tabelle und die Werte für jedes Feld.

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

Die Antwort enthält standardmäßig bis zu 50 Zeilen. Wenn Sie weitere Zeilen abrufen möchten, paginieren Sie die Antworten mithilfe der Parameter page_token und page_size (siehe unten):

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

Wenn mehr Seiten verfügbar sind, wird in der Antwort ein nextPageToken zurückgegeben. Andernfalls ist die Antwort nicht definiert. Übergeben Sie nextPageToken an den nächsten Listenaufruf, um die nächste Ergebnisseite abzurufen.

Der Maximalwert des Parameters page_size beträgt 1.000.

Eine Zeile aus einer Tabelle abrufen

Im folgenden Beispiel wird gezeigt, wie die Feldwerte einer Zeile aus einer Tabelle gelesen werden.

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

Zeilenliste filtern

Verwenden Sie den Parameter filter, um die Liste der Zeilen so zu filtern, dass nur die Ergebnisse angezeigt werden, die Sie interessieren. Weitere Informationen zur Syntax und zu den vom Filter unterstützten Spaltentypen finden Sie in der Dokumentation zur Filtering 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"]);
  }
}

Die Antwort enthält die Zeilen, in denen die Spalte „Point of Contact“ (Point of Contact) auf „john.doe@gmail.com“ gesetzt ist.

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

Zeile in einer Tabelle erstellen

Im folgenden Beispiel wird gezeigt, wie Sie einer Tabelle eine Zeile hinzufügen.

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

Wenn Sie die Werte angeben, die für die neue Zeile festgelegt werden sollen, müssen die Schlüssel der Objekt-Schlüssel/Wert-Paare genau mit den Titeln der Tabellenspalten übereinstimmen. Beachten Sie dabei die Groß- und Kleinschreibung, es sei denn, der Typ der beschreibbaren Spalte ist eine lookup- oder summary-Spalte. Legen Sie Werte für die Spalten lookup und summary fest, indem Sie den Wert für die Beziehung verwenden. Du musst den Wert für die Beziehung mithilfe des Beziehungsnamens im Dialogfeld Beziehungen aktualisieren.

Welche Werte für eine Spalte zulässig sind, hängt vom Datentyp der Spalte ab:

Spaltentyp Datentyp (Lesezugriff) Zulässige Eingabetypen (Schreiben)
Standarddaten
Text String String
Number Number Number
Datum Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (in den meisten Datumsformaten)
Rich-Daten
Person String (E-Mail-Adresse) String (muss mit dem Google-Nutzer übereinstimmen)
Dateianhang Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
Dieses Feld kann nicht mit der API geändert werden.
Standort Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
Umfassender Eintrag
Drop-down String String (muss mit den Drop-down-Optionen übereinstimmen)
Tags String[] (Array mit Tag-Optionen) String[] (muss mit den Tag-Optionen übereinstimmen)
Kästchen Boolean Boolean
Checkliste String[] (Array von Listenelementen) String[] (muss mit den Listenelementen übereinstimmen)
Verknüpfte Daten
Beziehung String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
Suchen Hängt vom Typ der Quellspalte ab. Dieses Feld kann nicht geändert werden und wird mit dem verknüpften Wert aktualisiert.
Zusammenfassung Je nach Quellspaltentyp und Zusammenfassungsfunktion:
Anzahl: Number
Höchstwert für eine Spalte vom Typ „Datum“: String
Listenwerte: Array
Dieses Feld kann nicht geändert werden.
Berechnetes Feld
Automatische ID Number Dieses Feld kann nicht geändert werden.
Metadaten
Ersteller/Urheber String Dieses Feld kann nicht geändert werden.
Erstellungszeitpunkt Object {
“seconds”: Number,
“nanos”: Number
}
Dieses Feld kann nicht geändert werden.
Updater String Dieses Feld kann nicht geändert werden.
Aktualisierungszeit Object {
“seconds”: Number,
“nanos”: Number
}
Dieses Feld kann nicht geändert werden.

Der Tables-Dienst versucht, bestimmte Werte so zu konvertieren, dass sie dem Spaltentyp entsprechen. Wenn die Daten nicht übereinstimmen, wird der Wert nicht festgelegt und das Feld für neue Zeilen bleibt leer.

Mehrere Zeilen zu einer Tabelle hinzufügen

Im folgenden Beispiel wird gezeigt, wie Sie einer Tabelle mehrere Zeilen gleichzeitig hinzufügen.

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)

Zeilen in einer Tabelle aktualisieren

Im folgenden Beispiel wird gezeigt, wie die Werte einer vorhandenen Zeile in einer Tabelle aktualisiert werden:

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));
Die Antwort gibt die aktualisierte Zeile zurück.

Zeilen-ID ermitteln

Sie können die ID für eine Zeile auf zwei Arten ermitteln:

Zeilen-ID mit der API abrufen

Wenn Sie Zeilen aus einer Tabelle lesen, können Sie für jede Zeile das Attribut name verwenden, das die Tabellen- und Zeilen-IDs enthält.

Zeilen-ID aus der Benutzeroberfläche von Tables abrufen
  1. Öffnen Sie die Tabelle in der Web-App „Tables“.
  2. Klicken Sie mit der rechten Maustaste auf die Zeile.
  3. Klicken Sie auf Link zu dieser Zeile abrufen.
  4. Fügen Sie die URL an einer anderen Stelle ein, damit Sie die ID kopieren können.
  5. Innerhalb der URL steht die ID nach /row/.

Im folgenden Beispiel sehen Sie, wo die Zeilen-ID in der URL zu finden ist:

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

Mehrere Zeilen in einer Tabelle aktualisieren

Im folgenden Beispiel wird gezeigt, wie die Werte mehrerer Zeilen in einer Tabelle aktualisiert werden:

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

Zeilen in einer Tabelle löschen

Im folgenden Beispiel wird gezeigt, wie eine einzelne Zeile aus einer Tabelle gelöscht wird:

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

Mehrere Zeilen in einer Tabelle löschen

Im folgenden Beispiel wird gezeigt, wie mehrere Zeilen in einer Tabelle gelöscht werden:

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

Gelöschte Zeilen wiederherstellen

Sie können gelöschte Zeilen über die Benutzeroberfläche von Tables wiederherstellen. So stellen Sie eine gelöschte Zeile wieder her:

  1. Öffnen Sie auf Ihrem Computer die Web-App „Tables“.
  2. Öffnen Sie die Tabelle, in der Sie Zeilen wiederherstellen möchten.
  3. Klicken Sie oben auf „Gelöschte Zeilen und Spalten anzeigen“ .
  4. Klicken Sie auf Gelöschte Zeilen.
  5. Klicken Sie rechts neben der Zeile, die Sie wiederherstellen möchten, auf „Aus Papierkorb wiederherstellen“ .

Liste der Arbeitsbereiche abrufen

Im folgenden Beispiel wird gezeigt, wie Sie eine Liste aller Arbeitsbereiche des Nutzers abrufen.

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

Hier ein Beispiel für die Ausgabelogs:

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