Masa hizmeti

Tablolar hizmeti, komut dosyalarının Google Tablolar'daki satırları programatik olarak okumasına ve düzenlemesine olanak tanır.

Referans

Bu hizmet hakkında daha fazla bilgi için Tables API'nin belgelerine bakın. Apps Komut Dosyası'ndaki tüm gelişmiş hizmetler gibi Tables hizmeti de herkese açık API ile aynı nesneleri, yöntemleri ve parametreleri kullanır. Daha fazla bilgi için Yöntem imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Sorunları bildirmek ve başka destek almak için Tables destek kılavuzuna bakın.

Örnek kod

Tabloların listesini alma

Aşağıdaki örnekte, kullanıcının sahip olduğu tüm tabloların listesinin nasıl alınacağı gösterilmektedir.

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

Aşağıda, tablo ve tablo sütunu tanımları hakkında bilgi içeren yanıt örneği verilmiştir:

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

Yanıt, varsayılan olarak en fazla 20 tablo içerir. Daha fazla tablo almak için yanıtları, aşağıda gösterilen page_token ve page_size parametrelerini kullanarak sayfalara ayırın:

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

Tabloları listelemek için page_size parametresinin maksimum değeri 100'dür.

Tablo bilgilerini ve sütun tanımlarını alma

Aşağıdaki örnekte, belirli bir tablonun bilgilerinin ve sütun tanımının nasıl alınacağı gösterilmektedir.

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

Tablo kimliğini bulma

Tablonun kimliğini bulmak için tabloyu Tablolar web uygulamasında açın. Üstteki URL'de tablo kimliği, /table/ karakterinden hemen sonra yer alır.

Aşağıdaki örnekte, çeşitli Tablolar URL'lerinde tablo kimliğinin nerede bulunacağı gösterilmektedir:

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

Tablo satırlarını okuma

Aşağıdaki örnekte, bir tablonun satırlarının listesinin nasıl alınacağı ve alan değerlerinin nasıl okunacağı gösterilmektedir.

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

Aşağıda örnek bir yanıt gösterilmektedir. Yanıt, tablodaki satırların listesini ve her alanın değerlerini içerir.

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

Yanıt varsayılan olarak en fazla 50 satır içerir. Daha fazla satır almak için aşağıdaki page_token ve page_size parametrelerini kullanarak yanıtları sayfalara ayırın:

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

Daha fazla sayfa varsa yanıtta bir nextPageToken sunulur. Aksi takdirde yanıt tanımlanmaz. Sonuçların bir sonraki sayfasını almak için sonraki liste çağrısına nextPageToken parametresini iletin.

page_size parametresinin maksimum değeri 1.000'dir.

Tablodan bir satır alma

Aşağıdaki örnekte, bir tablodaki bir satırın alan değerlerinin nasıl okunacağı gösterilmektedir.

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

Satır listesini filtreleme

Yalnızca ilgilendiğiniz sonuçları elde etmek için satır listesini filtrelemek üzere filter parametresini kullanın. Filtre tarafından desteklenen söz dizimi ve sütun türleri hakkında daha fazla bilgi için lütfen filtreleme API belgelerine göz atın.

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

Yanıtta, "İletişim kişisi" sütunu "can.demir@gmail.com" olarak ayarlanmış satırlar yer alır.

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

Tabloda satır oluşturma

Aşağıdaki örnekte, tabloya nasıl satır ekleneceği gösterilmektedir.

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

Yeni satır için ayarlanacak değerleri belirttiğinizde, nesne anahtar/değer çiftlerinin anahtarları, yazılabilir sütunun türü arama veya özet sütunu olmadığı sürece tablo sütunlarının büyük/küçük harf duyarlı başlıklarıyla tam olarak eşleşmelidir. İlişkinin değerini kullanarak arama ve özet sütunlarının değerlerini ayarlarsınız. İlişkilendirmeler iletişim kutusunda bulunan ilişki adını kullanarak ilişkinin değerini güncellemeniz gerekir.

Bir sütun için kabul edilebilir değerler sütunun veri türüne bağlıdır:

Sütun türü Veri türü (okuma) Kabul edilen giriş türleri (yazma)
Standart veriler
Metin String String
Number Number Number
Tarih Date
Object {
"year": Number,
"month": Number,
"day": Number
}
Date, String (çoğu tarih biçiminde)
Zengin veriler
Person String (e-posta adresi) String (Google kullanıcısıyla eşleşmelidir)
Dosya eki Object[] {
"id": String,
"name": String,
"mimeType": String,
"url": String
}
Bu alan API ile değiştirilemez.
Konum Object {
"latitude": Number,
"longitude": Number,
"address": String
}
Object {
"latitude": Number (required),
"longitude": Number (required),
"address": String
}
Zengin giriş
Açılır liste String String (açılır liste seçenekleriyle eşleşmelidir)
Etiketler String[] (etiket seçenekleri dizisi) String[] (etiket seçenekleriyle eşleşmelidir)
Onay kutusu Boolean Boolean
Yapılacaklar listesi String[] (liste öğesi dizisi) String[] (liste öğeleriyle eşleşmelidir)
Bağlı veriler
İlişki String String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
Arama Kaynak sütun türüne bağlıdır. Bu alan değiştirilemez ve bağlı değerle güncellenir.
Özet Kaynak sütun türüne ve özet işlevine bağlıdır:
Say: Number
Tarih türündeki bir sütunda maksimum: String
Liste Değerleri: Array
Bu alan değiştirilemez.
Hesaplanan alan
Otomatik kimlik Number Bu alan değiştirilemez.
Meta veri
İçerik Üretici String Bu alan değiştirilemez.
Oluşturma zamanı Object {
“seconds”: Number,
“nanos”: Number
}
Bu alan değiştirilemez.
Updater String Bu alan değiştirilemez.
Güncelleme zamanı Object {
“seconds”: Number,
“nanos”: Number
}
Bu alan değiştirilemez.

Tables hizmeti, belirli değerleri sütun türüyle eşleşecek şekilde dönüştürmek için elinden geleni yapar. Veriler eşleşmezse değer ayarlanmaz ve yeni satırlar için boş bırakılır.

Tabloya birden fazla satır ekleme

Aşağıdaki örnekte, bir tabloya aynı anda birden fazla satırın nasıl ekleneceği gösterilmektedir.

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)

Tablodaki bir satırı güncelleme

Aşağıdaki örnekte, tablodaki mevcut bir satırın değerlerinin nasıl güncelleneceği gösterilmektedir:

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));
Yanıt, güncellenen satırı döndürür.

Satır kimliğini bulma

Bir satırın kimliğini iki şekilde bulabilirsiniz:

API ile satır kimliğini alma

Bir tablodan satırları okurken her satır için tablo ve satır kimliklerini içeren name özelliğini kullanabilirsiniz.

Tablolar kullanıcı arayüzünden satır kimliğini alma
  1. Tabloyu Tables web uygulamasında açın.
  2. Satırı sağ tıklayın.
  3. Bu satırın bağlantısını al'ı tıklayın.
  4. Kimliği kopyalayabilmek için URL'yi bir yere yapıştırın.
  5. URL'de kimlik, /row/ ifadesinden sonra gelir.

Aşağıdaki örnekte, satır kimliğinin URL'de nerede bulunacağı gösterilmektedir:

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

Tabloda birden fazla satırı güncelleme

Aşağıdaki örnekte, bir tablodaki birden çok satırın değerlerinin nasıl güncelleneceği gösterilmektedir:

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

Tablodaki bir satırı silme

Aşağıdaki örnekte, bir tablodan tek bir satırın nasıl silineceği gösterilmektedir:

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

Tablodaki birden fazla satırı silme

Aşağıdaki örnekte, bir tablodaki birden çok satırın nasıl silineceği gösterilmektedir:

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

Silinen satırları geri yükleme

Silinen satırları Tablolar kullanıcı arayüzünden geri yükleyebilirsiniz. Silinen bir satırı geri yüklemek için aşağıdaki adımları uygulayın:

  1. Bilgisayarınızda Tables web uygulamasını açın.
  2. Satırlarını geri yüklemek istediğiniz tabloyu açın.
  3. En üstte, Silinen satırları ve sütunları göster'i tıklayın.
  4. Silinen satırlar'ı tıklayın.
  5. Geri yüklemek istediğiniz satırın sağındaki Çöp kutusundan geri yükle'yi tıklayın.

Çalışma alanlarının listesini alma

Aşağıdaki örnekte, kullanıcıya ait tüm çalışma alanlarının listesinin nasıl alınacağı gösterilmektedir.

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

Aşağıda çıkış günlüklerine örnek verilmiştir:

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