Sheets API v3'ten veri taşıma

Google E-Tablolar API v3'e dayalı mevcut uygulamalarınız varsa Google E-Tablolar API v4'e geçebilirsiniz. v4 sürümü JSON tabanlıdır, daha kolay kullanılan bir arayüze sahiptir ve v3 sürümünde mümkün olmayan önemli miktarda işlev ekler.

Bu sayfada, eski Sheets API v3 komutları ile Sheets API v4'teki eşdeğer işlemler arasındaki eşleme sağlanmaktadır. Haritalama, büyük ölçüde doğrudan hücre okuma ve yazma işlevi sağlayan spreadsheets.values koleksiyonuna odaklanır. Sayfa ekleme veya sayfa özelliklerini güncelleme gibi diğer işlemler spreadsheets koleksiyonu tarafından gerçekleştirilir. 4. sürüm API'sinin JSON yapılarının, 3. sürümde kullanılan XML yapılarıyla geriye dönük olarak uyumlu olmadığını unutmayın.

Sheets v4 API'de bulunan kaynaklar hakkında daha fazla bilgi için API Referansı'na bakın.

Notasyon ve terimler

v3 API, belirli bir e-tablodaki sayfaları "çalışma sayfaları" olarak adlandırır. Bu, v4 API'nin kullandığı "sayfalar" terimiyle eş anlamlıdır.

API'ler genellikle üzerinde çalıştığınız e-tablonun e-tablo kimliğini belirtmenizi gerektirir. Ayrıca, genellikle üzerinde işlem yapılan sayfanın kimliğini de gerektirirler. Bu değerler API uç noktası URL'sinin, sorgu parametrelerinin veya istek gövdesinin bir parçası olarak görünür. Bu sayfada, spreadsheetId ve sheetId yer tutucuları sırasıyla e-tablo ve sayfa kimliklerini ifade eder. Bu sayfada açıklanan yöntemleri kullanırken bu konumlardaki gerçek kimlikleri girin.

v3 API'si, list feed kullanılarak alınan satırlara da kimlik atar. Bu kimlik, bu sayfada rowId yer tutucusuyla gösterilir.

İstekleri yetkilendirme

Uygulamanız çalışırken kullanıcılardan belirli izinler vermelerini ister. Uygulamanızda belirttiğiniz kapsamlar, hangi izinlerin isteneceği konusunda belirleyici olur.

v3 API

Sheets API v3 tek bir yetkilendirme kapsamıyla çalışır:

https://spreadsheets.google.com/feeds

Bu,

https://www.googleapis.com/auth/spreadsheets

Her iki kapsam biçimi de kullanılabilir.

v4 API

E-Tablolar API'si v4, aşağıdaki kapsam kümelerinden birini veya daha fazlasını kullanır:

https://www.googleapis.com/auth/spreadsheets.readonly
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive

Uygulamanızın, kullanıcının sayfalarında veya sayfa özelliklerinde düzenleme yapması gerekmiyorsa salt okunur kapsamları kullanın. Uygulamanın genel Drive erişimine ihtiyacı yoksa Drive kapsamları yerine e-tablo kapsamlarını kullanın.

Görünürlük

API'nin eski sürümlerinde, belirli bir e-tablonun kullanılabilirliğini ifade etmek için görünürlük terimi kullanılır.

v3 API

E-Tablolar API'si v3, görünürlüğü doğrudan uç noktalarında ifade eder. public e-tablosu "Web'de yayınlandığı" için API tarafından yetkilendirme olmadan erişilebilir. private e-tablosu ise kimlik doğrulama gerektirir. Görünürlük, e-tablo kimliğinden sonra uç noktada belirtilir:

https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full

v4 API

Yeni E-Tablolar API'si v4'te görünürlükle ilgili açık bir beyan yoktur. API çağrıları, e-tablo kimlikleri kullanılarak yapılır. Uygulamanın belirtilen e-tabloya erişme izni yoksa hata döndürülür. Aksi takdirde görüşme devam eder.

Projeksiyon

Yansıtma terimi, Sheets API v3 tarafından belirli bir API çağrısı tarafından döndürülen veri kümesini ifade etmek için kullanılır. Bu veri kümesi, verilerin tamamı veya API içinde tanımlanan sabit bir alt küme olabilir. Sheets API v4, projeksiyon kullanmaz. Bunun yerine, hangi verilerin döndürüleceği konusunda daha fazla kontrol sahibi olmanızı sağlar.

v3 API

E-Tablolar API'si v3'te yalnızca iki olası projeksiyon ayarı vardır. full projection, mevcut tüm bilgileri döndürürken basic, daha küçük ve sabit bir veri alt kümesini (çalışma sayfaları, liste ve hücre feed'leri için) döndürür. Görünürlük gibi, projeksiyon da API uç noktasında (görünürlük ayarından sonra) belirtilmelidir:

https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/public/basic

basic projeksiyonu tarafından sağlanan daha küçük veri alt kümesi, kodu daha verimli hale getirmek için değerlidir ancak özelleştirilemez.

v4 API

Sheets API v4 tam bir veri kümesi döndürebilir ancak Sheets API v3'teki basic görünürlük ayarına benzer sabit alt kümeler tanımlamaz. E-tablo koleksiyonundaki yöntemler, fields sorgu parametresini kullanarak döndürdükleri veri miktarını kısıtlar.

Örneğin, aşağıdaki sorgu yalnızca belirli bir e-tablodaki tüm sayfaların başlıklarını döndürür:

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?fields=sheets.properties.title

E-tablo oluştur

v3 API

Sheets API v3, yeni e-tablolar oluşturmak için bir yöntem sağlamaz. Bunun yerine, yeni e-tablo dosyaları oluşturmak için Drive API Files.create yöntemi kullanılabilir. Bunun için uygulamanın https://www.googleapis.com/auth/drive kapsamını bildirmesi gerekir.

v4 API

Drive API Files.create yöntemi, Sheets API v4 ile de kullanılabilir ancak uygulamanın https://www.googleapis.com/auth/drive kapsamını sağlaması gerekir.

Eşdeğer bir alternatif olarak, E-Tablolar API'si v4, spreadsheets.create yöntemini sunar. Bu yöntem, isteğe bağlı olarak sayfalar da ekleyebilir, e-tablo ve sayfa özelliklerini ayarlayabilir ve adlandırılmış aralıklar ekleyebilir. Örneğin, aşağıdaki kod yeni bir elektronik tablo oluşturur ve bu tabloya "NewTitle" adını verir:

POST https://sheets.googleapis.com/v4/spreadsheets
{
 "properties": {"title": "NewTitle"}
}

Kimliği doğrulanmış kullanıcının e-tablolarını listeleme

v3 API

Sheets API v3 feed'i, bir uygulamanın kimliği doğrulanmış kullanıcının erişebildiği tüm e-tabloların listesini almasına olanak tanır. E-tablo feed'i uç noktası:

GET https://spreadsheets.google.com/feeds/spreadsheets/private/full

v4 API

Sheets API v4 bu işlemi desteklemez. Uygulamanızı, e-tablo seçimi için Google Picker ile birlikte drive.file kapsamını kullanacak şekilde taşımanızı öneririz.

E-tabloların listelenmesi gerektiği durumlarda, Drive API Files.list yöntemiyle mimeType sorgusu kullanılarak bu işlem yapılabilir:

GET https://www.googleapis.com/drive/v3/files
             ?q=mimeType='application/vnd.google-apps.spreadsheet'

Bir kullanıcının tüm e-tablolarını listelemek için Drive API files.list yönteminin kullanılması kısıtlanmış bir kapsam gerektirir.

Sayfa meta verilerini alma

Sheets API v3, belirli bir e-tabloda bulunan sayfa meta verilerine erişmek için bir feed sağlar (satır ve hücre verilerine ayrı bir feed üzerinden erişilir). Meta veriler, sayfa başlıkları ve boyut bilgileri gibi bilgileri içerir.

Sheets API v4'teki spreadsheets.get yöntemi, bu bilgilere ve çok daha fazlasına erişim sağlar.

v3 API

Çalışma sayfası feed'ine bu API uç noktasından erişilebilir (uygun bir yetkilendirme başlığı kullanılarak):

GET https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full

Bu isteğe verilen yanıt, her bir sayfanın verileri ayrı bir <entry> içinde olacak şekilde buna benzer bir yapıya sahiptir:

<feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:gd="http://schemas.google.com/g/2005"
    gd:etag='W/"D0cERnk-eip7ImA9WBBXGEg."'>
  <id>https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full</id>
  <updated>2006-11-17T18:23:45.173Z</updated>
  <title type="text">Groceries R Us</title>
  <link rel="alternate" type="text/html"
      href="https://spreadsheets.google.com/ccc?key=spreadsheetId"/>
  <link rel="http://schemas.google.com/g/2005#feed"
      type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
  <link rel="self" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
  <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
  <author>
    <name>Fitzwilliam Darcy</name>
    <email>fitz@example.com</email>
  </author>
  <openSearch:totalResults>1</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>1</openSearch:itemsPerPage>
  <entry gd:etag='"YDwqeyI."'>
    <id>https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId</id>
    <updated>2006-11-17T18:23:45.173Z</updated>
    <title type="text">Sheet1</title>
    <content type="text">Sheet1</content>
    <link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
        type="application/atom+xml"
        href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full"/>
    <link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
        type="application/atom+xml"
        href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/>
    <link rel="self" type="application/atom+xml"
        href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId"/>
    <link rel="edit" type="application/atom+xml"
        href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version"/>
    <gs:rowCount>100</gs:rowCount>
    <gs:colCount>20</gs:colCount>
  </entry>
</feed>

v4 API

Sayfa özelliklerini ve diğer meta verileri (Sheets API v3 ile kullanılabilenlerden çok daha fazlası) edinmek için spreadsheets.get yöntemini kullanabilirsiniz. Yalnızca sayfa özelliklerini okumak istiyorsanız e-tablo hücresi verilerinin dahil edilmesini önlemek için includeGridData sorgu parametresini false olarak ayarlayın:

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?includeGridData=false

Spreadsheet yanıtı, Sheet nesnelerinden oluşan bir dizi içerir. Özellikle sayfa başlıkları ve boyut bilgileri, bu nesnelerin SheetProperties öğesi altında bulunabilir. Örneğin:

{
  "spreadsheetId": spreadsheetId,
  "sheets": [
      {"properties": {
          "sheetId": sheetId,
          "title": "Sheet1",
          "index": 0,
          "gridProperties": {
              "rowCount": 100,
              "columnCount": 20,
              "frozenRowCount": 1,
              "frozenColumnCount": 0,
              "hideGridlines": false
          },
          ...
       },
       ...
      },
      ...
  ],
  ...
}

E-tabloya sayfa ekleme

Her iki API de mevcut bir e-tabloya yeni sayfalar eklemenize olanak tanır.

v3 API

Sheets API v3, aşağıdaki (kimliği doğrulanmış) POST isteğini göndererek bir e-tabloya yeni çalışma sayfaları ekleyebilir. Yeni sayfanın boyutunu belirtebilirsiniz:

POST https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full
<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006">
  <title>Expenses</title>
  <gs:rowCount>50</gs:rowCount>
  <gs:colCount>10</gs:colCount>
</entry>

v4 API

spreadsheets.batchUpdate yönteminde AddSheet isteği göndererek yeni sayfalar ekleyebilirsiniz. İstek gövdesinin bir parçası olarak yeni sayfanın sayfa özelliklerini belirtebilirsiniz. Tüm özellikler isteğe bağlıdır. Mevcut bir sayfada kullanılan bir başlığı sağlamak hatadır.

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [{
      "addSheet": {
          "properties": {
            "title": "Expenses",
            "sheetType": "GRID",
            "gridProperties": {
              "rowCount": 50,
              "columnCount": 10
            }
          }
      }
  }],
}

Sayfa başlığını ve boyutunu değiştirme

Sheets API v3, sayfa başlıklarını ve boyutunu güncellemenize olanak tanır. Sheets API v4 de bu işlevi destekler ancak diğer sayfa özelliklerini güncellemek için de kullanılabilir. Bir sayfanın boyutunu küçültmenin, kırpılan hücrelerdeki verilerin uyarıda bulunulmadan silinmesine neden olabileceğini unutmayın.

v3 API

Bir çalışma sayfasının başlığını veya boyutunu değiştirmek için öncelikle çalışma sayfası feed'ini alın ve edit URL'si içeren istediğiniz çalışma sayfası girişini bulun. Çalışma sayfasının meta verilerini güncelleyin ve düzenleme URL'sine PUT isteğinin gövdesi olarak gönderin. Örneğin:

PUT https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version
<entry>
  <id>
    https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId
  </id>
  <updated>2007-07-30T18:51:30.666Z</updated>
  <category scheme="http://schemas.google.com/spreadsheets/2006"
    term="http://schemas.google.com/spreadsheets/2006#worksheet"/>
  <title type="text">Expenses</title>
  <content type="text">Expenses</content>
  <link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
    type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full"/>
  <link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
    type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/>
  <link rel="self" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId"/>
  <link rel="edit" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version"/>
  <gs:rowCount>45</gs:rowCount>
  <gs:colCount>15</gs:colCount>
</entry>

v4 API

Boyutu, başlığı ve diğer sayfa özelliklerini güncellemek için spreadsheets.batchUpdate yönteminde updateSheetProperties isteği gönderin. POST istek gövdesi, değiştirilecek özellikleri içermelidir ve fields parametresi bu özellikleri açıkça listelemelidir (tüm özellikleri güncellemek istiyorsanız hepsini listelemek için kısaltma olarak fields:"*" kullanın). Örneğin, aşağıda belirtilen kodda, verilen kimliğe sahip sayfanın sayfa başlığı ve boyut özelliklerinin güncellenmesi gerektiği belirtilmektedir:

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [
    {
      "updateSheetProperties": {
          "properties": {
            "sheetId": sheetId,
            "title": "Expenses",
            "gridProperties": {
              "rowCount": 45,
              "columnCount": 15,
            }
          },
          "fields": "title,gridProperties(rowCount,columnCount)"
     }
   }
  ],
}

Bir sayfanın sheetId değerini almak için e-tablo spreadsheets.get yöntemini kullanın.

Sayfa silme

Her iki API de belirli bir e-tablodan sayfaları kaldırabilir.

v3 API

Bir çalışma sayfasını silmek için önce çalışma sayfası feed'ini alın, ardından hedef çalışma sayfası girişinin edit URL'sinde bir DELETE isteği gönderin.

DELETE https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version

v4 API

Bir sayfayı silmek için spreadsheets.batchUpdate yönteminde DeleteSheet isteği gönderin. POST istek metni, yalnızca silinecek sayfanın sheetId değerini içermelidir. Örneğin:

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [
    {
      "deleteSheet": {
        "sheetId": sheetId
      }
    }
  ],
}

Tek bir sayfanın sheetId değerini almak için e-tablo spreadsheets.get yöntemini kullanın.

Satır verilerini alma

list rows feed, Sheets API v3'ün bir e-tablonun hücrelerindeki verilere erişmek için sağladığı iki yöntemden biridir (diğeri cells feed). Satır feed'i, yaygın e-tablo işlemlerini (satır satır okuma, satır ekleme, sıralama) desteklemek için tasarlanmıştır ancak bazı görevler için uygun olmayan belirli varsayımlarda bulunur. Özellikle liste feed'i, boş satırların feed sonlandırmaları olduğunu ve zorunlu başlıkların bir sayfanın ilk satırında bulunduğunu varsayar.

Buna karşılık, Sheets API v4 satıra özel erişim yöntemleri kullanmaz. Bunun yerine, A1 notasyonu kullanılarak gereken belirli aralıklara referans verilerek sayfa hücresi verilerine erişilir. Aralıklar; hücre blokları, satırların tamamı, sütunların tamamı veya sayfaların tamamı olabilir. API, bağlantısız hücre kümelerine de erişebilir.

v3 API

Belirli bir çalışma sayfası için liste tabanlı feed'in URL'sini belirlemek üzere çalışma sayfası feed'ini alın ve ilgilendiğiniz çalışma sayfası girişinde liste feed'i URL'sini bulun.

Liste tabanlı bir feed'i almak için uygun bir yetkilendirme üstbilgisi kullanarak liste feed'i URL'sine bir GET isteği gönderin. Örneğin:

GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full

Bu isteğe verilen yanıtta, diğer öğelerin yanı sıra belirli satırlara karşılık gelen girişler yer alıyor. Tek tek hücrelere, (zorunlu) sayfa başlığı satırında belirtilen adlarla referans verilir. Örneğin, tek satırlık bir giriş aşağıda verilmiştir:

<entry gd:etag='"S0wCTlpIIip7ImA0X0QI"'>
  <id>rowId</id>
  <updated>2006-11-17T18:23:45.173Z</updated>
  <category scheme="http://schemas.google.com/spreadsheets/2006"
      term="http://schemas.google.com/spreadsheets/2006#list"/>
  <title type="text">Bingley</title>
  <content type="text">Hours: 10, Items: 2, IPM: 0.0033</content>
  <link rel="self" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/>
  <link rel="edit" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version"/>
  <gsx:name>Bingley</gsx:name>
  <gsx:hours>10</gsx:hours>
  <gsx:items>2</gsx:items>
  <gsx:ipm>0.0033</gsx:ipm>
</entry>

Varsayılan olarak, liste feed'inde döndürülen satırlar satır sırasına göre döndürülür. E-Tablolar API'si v3, bu sırayı değiştirmek için sorgu parametreleri sağlar.

Ters sıra:

GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full?reverse=true

Belirli bir sütuna göre sıralama:

GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
             ?orderby=column:lastname

E-Tablolar API'si v3, yapılandırılmış bir sorgu (sütun başlıklarıyla referans verilir) aracılığıyla belirli satırların filtrelenmesine de olanak tanır:

GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
             ?sq=age>25%20and%20height<175

v4 API

Sheets API v4 ile satırlar, spreadsheets.values.get veya spreadsheets.values.batchGet yöntemleri kullanılarak aralığa göre alınabilir. Örneğin, aşağıdakiler "Sayfa1"deki tüm satırları döndürür:

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1

Bu isteğe verilen yanıtın yapısı şöyledir:

{
  "range": "Sheet1",
  "majorDimension": "ROWS",
  "values": [["Name", "Hours", "Items", "IPM"],
             ["Bingley", "10", "2", "0.0033"],
             ["Darcy", "14", "6", "0.0071"]]
}

Satırların, sütunların veya sayfaların tamamı alınırken sondaki boş hücreler yanıta dahil edilmez.

Sheets API v4, Sheets API v3 tarafından sağlanan satır sırası sorgu parametrelerinin eşdeğerlerine sahip değildir. Ters sıralama kolaydır. Döndürülen values dizisini ters sırada işlemek yeterlidir. Okuma işlemlerinde sütuna göre sıralama desteklenmez ancak sayfadaki verileri SortRange isteği kullanarak sıralayıp okuyabilirsiniz.

Sheets API v4'te şu anda Sheets API v3 yapılandırılmış sorgularının doğrudan bir eşdeğeri yoktur. Ancak ilgili verileri alabilir ve uygulamanızda gerektiği gibi sıralayabilirsiniz.

Yeni bir veri satırı ekleme

API'lerden birini kullanarak bir sayfaya yeni bir veri satırı ekleyebilirsiniz.

v3 API

Belirli bir çalışma sayfası için liste tabanlı feed'in URL'sini belirlemek üzere çalışma sayfası feed'ini alın ve ilgilendiğiniz çalışma sayfası girişinde gönderi URL'sini bulun.

Veri satırı eklemek için uygun bir yetkilendirme üstbilgisi kullanarak gönderi URL'sine POST isteği gönderin. Örneğin:

POST https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full

POST isteğinin gövde bölümünde, eklenecek satır verileri için bir giriş bulunmalıdır. Bu giriş, sütun başlıklarıyla referans verilen ayrı hücreleri içerir:

<entry xmlns="http://www.w3.org/2005/Atom"
       xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">
  <gsx:hours>2</gsx:hours>
  <gsx:ipm>0.5</gsx:ipm>
  <gsx:items>60</gsx:items>
  <gsx:name>Elizabeth</gsx:name>
</entry>

Yeni satırlar, belirtilen sayfanın sonuna eklenir.

v4 API

Sheets API v4 ile spreadsheets.values.append yöntemini kullanarak satır ekleyebilirsiniz. Aşağıdaki örnek, bir e-tablonun "Sayfa1"indeki son tablonun altına yeni bir veri satırı yazar.

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/append/Sheet1

{
   "values": [["Elizabeth", "2", "0.5", "60"]]
}

Ayrıca, E-Tablolar API v4, spreadsheets.batchUpdate içinde AppendCells isteklerini kullanarak belirli özelliklere ve biçimlendirmeye sahip hücreler eklemenize de olanak tanır.

Bir satırı yeni verilerle düzenleme

Her iki API de satır verilerinin yeni değerlerle güncellenmesine olanak tanır.

v3 API

Bir veri satırını düzenlemek için güncellemek istediğiniz satırın girişini bulmak üzere liste feed'ini inceleyin. Bu girişin içeriğini gerektiği şekilde güncelleyin. Kullandığınız girişteki kimlik değerinin, mevcut girişin kimliğiyle tam olarak eşleştiğinden emin olun.

Giriş güncellendikten sonra, uygun bir yetkilendirme başlığı kullanarak bu satır girişinde sağlanan edit URL'sine istek gövdesi olarak girişi içeren bir PUT isteği gönderin. Örneğin:

PUT https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version
<entry gd:etag='"S0wCTlpIIip7ImA0X0QI"'>
  <id>rowId</id>
  <updated>2006-11-17T18:23:45.173Z</updated>
  <category scheme="http://schemas.google.com/spreadsheets/2006"
    term="http://schemas.google.com/spreadsheets/2006#list"/>
  <title type="text">Bingley</title>
  <content type="text">Hours: 10, Items: 2, IPM: 0.0033</content>
  <link rel="self" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/>
  <link rel="edit" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version"/>
  <gsx:name>Bingley</gsx:name>
  <gsx:hours>20</gsx:hours>
  <gsx:items>4</gsx:items>
  <gsx:ipm>0.0033</gsx:ipm>
</entry>

v4 API

Sheets API v4 ile, düzenlemek istediğiniz satırın A1 gösterimini kullanarak ve bu satırın üzerine yazmak için spreadsheets.values.update isteği göndererek satır düzenleyebilirsiniz. Belirtilen aralığın yalnızca satırdaki ilk hücreyi ifade etmesi gerekir. API, istekle birlikte sağlanan değerlere göre güncellenecek hücreleri çıkarır. Bunun yerine çok hücreli bir aralık belirtirseniz sağladığınız değerler bu aralığa sığmalıdır. Aksi takdirde API bir hata döndürür.

Aşağıdaki örnek istek ve istek gövdesi, "Sayfa1"in dördüncü satırına veri ekler:

PUT https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!A4
{
   "values": [["Elizabeth", "2", "0.5", "60"]]
}

Satır verilerini spreadsheet.values.batchUpdate yöntemini kullanarak da güncelleyebilirsiniz. Birden fazla satır veya hücre güncellemesi yapıyorsanız bu yöntemi kullanmak daha verimlidir.

Ayrıca, E-Tablolar API'si v4, UpdateCells veya RepeatCell isteklerini spreadsheets.batchUpdate içinde kullanarak hücre özelliklerini ve hücrelerin biçimlendirmesini düzenlemenize de olanak tanır.

Satır silme

Her iki API de satırların silinmesini destekler. Silinen satır e-tablodan kaldırılır ve altındaki satırlar bir yukarı kaydırılır.

v3 API

Bir satırı silmek için önce silinecek satırı liste feed'inden alın, ardından satırın girişinde sağlanan edit URL'sine bir DELETE isteği gönderin. Bu, satırı güncellemek için kullanılan URL ile aynıdır.

DELETE https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version

Alındıktan sonra başka bir istemci tarafından değiştirilen bir satırı silmediğinizden emin olmak istiyorsanız orijinal satırın ETag değerini içeren bir HTTP If-Match üstbilgisi ekleyin. Giriş öğesinin gd:etag özelliğini inceleyerek orijinal satırın ETag değerini belirleyebilirsiniz.

Satırı, siz aldıktan sonra başka bir kullanıcı tarafından güncellenip güncellenmediğine bakılmaksızın silmek istiyorsanız If-Match: * kullanın ve ETag'i eklemeyin. (Bu durumda, satırı silmeden önce almanız gerekmez.)

v4 API

E-Tablolar API v4 ile satır silme işlemi, spreadsheet.batchUpdate yöntemi çağrısıyla ve DeleteDimension isteği kullanılarak gerçekleştirilir. Bu istek, sütunları kaldırmak için de kullanılabilir. Geliştiriciler, bir satırın veya sütunun yalnızca bir kısmını kaldırmayı da seçebilir. Örneğin, aşağıdakiler, belirli kimliğe sahip bir sayfanın 6. satırını kaldırır (satır dizinleri sıfır tabanlıdır, startIndex dahil, endIndex hariçtir):

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "ROWS",
          "startIndex": 5,
          "endIndex": 6
        }
      }
    }
  ],
}

Bir sayfanın sheetId, spreadsheet.get yöntemi kullanılarak alınabilir.

Hücre verilerini alma

E-Tablolar API'si v3, bir e-tabloda depolanan tüm verilere temel erişim için bir hücre feed'i sağlar. Okuma erişimi için hücre feed'i, sorgu parametreleri kümesiyle tanımlanan sayfa hücrelerinin aralığını veya sayfa içeriğinin tamamını sağlayabilir ancak yalnızca tek bir blok olarak. Ayrı aralıklar, ek GET istekleri kullanılarak ayrı ayrı alınmalıdır.

E-Tablolar API'si v4, bir sayfadaki herhangi bir hücre verileri kümesini (birbirinden ayrı birden fazla aralık dahil) alabilir. Sheets API v3 yalnızca hücre içeriklerini giriş değerleri (bir kullanıcı tarafından klavyeden girileceği gibi) ve/veya formül çıkışları (sayısal ise) olarak döndürebilir. Sheets API v4 ise değerlere, formüllere, biçimlendirmeye, köprülere, veri doğrulamaya ve diğer özelliklere tam erişim sağlar.

v3 API

Belirli bir çalışma sayfası için hücre tabanlı feed'in URL'sini belirlemek üzere çalışma sayfası feed'ini inceleyin ve ilgilendiğiniz çalışma sayfası girişinde hücre feed'i URL'sini bulun.

Hücre tabanlı bir feed'i almak için hücre feed'i URL'sine uygun bir yetkilendirme başlığı kullanarak GET isteği gönderin. Örneğin:

GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full

Hücrelere satır ve sütun numarası kullanılarak başvurulur. Belirli bir aralığı getirmek için max-row, min-row, max-col ve min-col sorgu parametreleri kullanılabilir. Örneğin, aşağıdakiler 4. sütundaki (D) tüm hücreleri 2. satırdan başlayarak alır:

GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full
             ?min-row=2&min-col=4&max-col=4

E-Tablolar API'si v3, alınan hücrelerin inputValue değerini döndürür. Bu değer, kullanıcının hücreyi değiştirmek için Google E-Tablolar kullanıcı arayüzüne yazacağı değerdir. inputValue, değişmez değer veya formül olabilir. API, bazen de numericValue döndürür. Örneğin, bir formül sayı ile sonuçlandığında. Örneğin, bir yanıtta aşağıdaki yapıya benzer hücre girişleri yer alabilir:

<entry gd:etag='"ImB5CBYSRCp7"'>
  <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4</id>
  <updated>2006-11-17T18:27:32.543Z</updated>
  <category scheme="http://schemas.google.com/spreadsheets/2006"
    term="http://schemas.google.com/spreadsheets/2006#cell"/>
  <title type="text">D4</title>
  <content type="text">5</content>
  <link rel="self" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4"/>
  <link rel="edit" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4/srevc"/>
  <gs:cell row="4" col="4" inputValue="=FLOOR(C4/(B4*60),.0001)"
    numericValue="5.0">5</gs:cell>
</entry>

v4 API

İlgili aralık veya aralıklar için sırasıyla spreadsheets.values.get veya spreadsheets.values.batchGet yöntemini çağırarak hücre verilerini alın. Örneğin, aşağıdakiler "Sayfa2"nin D sütunundaki hücreleri, 2. satırdan başlayarak sütun öncelikli sırada döndürür ve formülleri girildiği şekilde döndürür (sondaki boş hücreler atlanır):

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet2!D2:D?majorDimension=COLUMNS&valueRenderOption=FORMULA

Bu isteğe verilen yanıt, yapı olarak aşağıdakine benzer:

{
  "spreadsheetId": spreadsheetId,
  "valueRanges": [
      {"range": "Sheet2!D2:D",
       "majorDimension": "COLUMNS",
       "values": [["Widget", 234, "=FLOOR(C4/(B4*60),.0001)", "=D4\*1000"]]
      }]
}

Birden fazla hücre verisi aralığını almak istiyorsanız spreadsheet.values.batchGet yöntemini kullanmak daha verimlidir. Biçimlendirme gibi hücre özelliklerine erişmek istiyorsanız spreadsheet.get yöntemini kullanmanız gerekir.

Hücre düzenleme

E-Tablolar API'si v3, değiştirilmiş hücre girişi istek gövdesi olarak kullanılarak hücre feed'ine PUT komutu verilerek hücre içeriğini düzenlemenize olanak tanır.

Buna karşılık Sheets API v4, hücre içeriğini değiştirmek için spreadsheets.values.update ve spreadsheets.values.batchUpdate yöntemlerini sağlar.

v3 API

Tek bir hücrenin içeriğini düzenlemek için önce hücre feed'inde hücrenin girişini bulun. Giriş, bir düzenleme URL'si içeriyor. Girişi, hücrenin içermesini istediğiniz içerikleri yansıtacak şekilde güncelleyin ve ardından, istek gövdesi olarak güncellenmiş hücre girişiyle birlikte düzenleme URL'sine PUT isteği gönderin. Örneğin, aşağıdaki kod D2 (R2C4) hücresini SUM formülünü içerecek şekilde günceller:

PUT https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full//R2C4/srevc

<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006">
  <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4</id>
  <link rel="edit" type="application/atom+xml"
    href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4"/>
  <gs:cell row="2" col="4" inputValue="=SUM(A1:B6)"/>
</entry>

v4 API

Sheets API v4'te tek hücre düzenleme işlemi spreadsheets.values.update yöntemiyle yapılabilir. Bu yöntem, giriş verilerinin E-Tablolar kullanıcı arayüzüne girilmiş gibi mi (USER_ENTERED) işleneceğini yoksa ayrıştırılmadan olduğu gibi mi (RAW) alınacağını belirten bir ValueInputOption sorgu parametresi gerektirir. Örneğin, aşağıdakiler D2 hücresini bir formülle günceller:

PUT https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/D2?valueInputOption=USER_ENTERED
{"values": [["=SUM(A1:B6)"]]}

Birden fazla hücre düzenlemesi yapıyorsanız bunları tek bir istekte göndermek için spreadsheets.values.batchUpdate yöntemini kullanın.

Toplu istek aracılığıyla birden fazla hücreyi düzenleme

Her iki API de tek bir (toplu) istekle birden fazla hücrenin içeriğinde değişiklik yapma olanağı sunar. Toplu istek tarafından başvurulan hücrelerin bitişik bir aralıkta olması gerekmez.

Toplu işlemdeki bir veya daha fazla hücre düzenlemesi başarısız olursa Sheets API v3, diğerlerinin başarılı olmasına izin verir. Ancak, Sheets API v4, toplu güncellemelerden herhangi biri başarısız olursa hata döndürür ve bu durumda hiçbirini uygulamaz.

v3 API

Birden fazla hücreyi düzenlemek için önce çalışma sayfasıyla ilgili bir hücre feed'i alın. Giriş, toplu URL içeriyor. Güncellemek istediğiniz hücreleri ve yeni hücre içeriğini açıklayan bir istek gövdesiyle birlikte bu URL'ye bir POST istek gönderin. POST isteği ve istek gövdesi aşağıdaki gibi bir yapıya sahiptir:

POST https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/batch
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:batch="http://schemas.google.com/gdata/batch"
      xmlns:gs="http://schemas.google.com/spreadsheets/2006">
  <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full</id>
  <entry>
    <batch:id>request1</batch:id>
    <batch:operation type="update"/>
    <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4</id>
    <link rel="edit" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4/version"/>
    <gs:cell row="2" col="4" inputValue="newData"/>
  </entry>
  ...
  <entry>
    <batch:id>request2</batch:id>
    <batch:operation type="update"/>
    <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5</id>
    <link rel="edit" type="application/atom+xml"
      href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5/version"/>
    <gs:cell row="5" col="2" inputValue="moreInfo"/>
  </entry>
</feed>

batch:id alanı, toplu iş içindeki isteği benzersiz şekilde tanımlamalıdır. Hücre düzenlemeleri için batch:operation alanı update olmalıdır. gs:cell Hücreyi satır ve sütun numarasına göre tanımlar ve buraya eklenecek yeni verileri sağlar. id, güncellenecek hücrenin tam URL'sini içerir. link, hücrenin kimliğine giden tam yolu içeren bir href özelliğine sahip olmalıdır. Her giriş için bu alanların tümü zorunludur.

v4 API

Sheets API v4, spreadsheets.values.batchUpdate yöntemiyle hücre değerlerinin toplu olarak düzenlenmesini sağlar.

Birden fazla hücreyi düzenlemek için istek gövdesinde belirtilen veri değişiklikleriyle birlikte bir POST isteği gönderilebilir. Örneğin:

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values:batchUpdate
{
  "valueInputOption": "USER_ENTERED"
  "data": [
       {"range": "D4",
        "majorDimension": "ROWS",
        "values": [["newData"]]
       },
       {"range": "B5",
        "majorDimension": "ROWS",
        "values": [["moreInfo"]]
       }
  ]
}

Aralık olarak tek bir hücre belirlediyseniz belirtilen tüm değerler, sol üst koordinat olarak bu hücreden başlayarak sayfaya yazılır. Bunun yerine çok hücreli bir aralık belirtirseniz sağladığınız değerler bu aralığa tam olarak uymalıdır. Aksi takdirde API bir hata döndürür.