Sheets API v3'ten veri taşıma

Google Sheets API v3'e dayalı mevcut uygulamalarınız varsa Google Sheets API v4'e geçebilirsiniz. JSON tabanlı olan v4 sürümü, daha kolay kullanılan bir arayüze sahiptir ve v3 sürümünde mümkün olmayan çok sayıda işlev ekler.

Bu sayfada, eski Sheets API v3 komutları ile Sheets API v4'teki eşdeğer işlemleri arasındaki eşleme gösterilmektedir. Eşleme, büyük ölçüde doğrudan hücre okuma ve yazma işlevi sağlayan spreadsheets.values koleksiyonuna odaklanır. E-tablo ekleme veya e-tablo özelliklerini güncelleme gibi diğer özellikler e-tablolar koleksiyonu tarafından yönetilir. API'nin 4. sürümünün JSON yapılarının, 3. sürümde kullanılan XML yapılarıyla geriye dönük uyumlu olmadığını unutmayın.

E-Tablolar v4 API'de kullanılabilen 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 ifade eder. Bu, v4 API'nin kullandığı "sheets" terimiyle aynı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ği de gerekir. Bu değerler, API uç noktası URL'sinin parçası olarak, sorgu parametreleri olarak veya istek gövdesinin 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 kullanın.

v3 API, liste feed'i kullanılarak alınan satırlara da bir kimlik atar. Bu kimlik, bu sayfada rowId yer tutucusu ile gösterilir.

İstekleri yetkilendirme

Uygulamanız çalışırken kullanıcılardan belirli izinler vermesini ister. Hangi izinlerin isteneceğini uygulamanızda belirttiğiniz kapsamlar belirler.

v3 API

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

https://spreadsheets.google.com/feeds

şununla aynı anlama gelir:

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 gruplarından 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 bir kullanıcının e-tablolarında veya e-tablo özelliklerinde düzenleme yapması gerekmiyorsa salt okuma kapsamlarını kullanın. Uygulamanın genel Drive erişimine ihtiyacı yoksa Drive kapsamları yerine e-tablo kapsamları kullanın.

Görünürlük

API'nin eski sürümlerinde, belirli bir e-tablonun kullanılabilirliğini belirtmek 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-tabloları "Web'de yayınlanmıştır" ve bu nedenle API tarafından yetkilendirme olmadan erişilebilir. private e-tabloları için ise kimlik doğrulama gerekir. Görünürlük, uç noktada e-tablo kimliğinden sonra belirtilir:

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

v4 API

Yeni E-Tablolar API 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

Projeksiyon terimi, Sheets API v3 tarafından belirli bir API çağrısı tarafından döndürülen veri kümesini (tümünü veya API içinde tanımlanan sabit bir alt kümeyi) belirtmek için kullanılır. E-Tablolar API v4, projeksiyon kullanmaz. Bunun yerine, döndürülen veriler üzerinde daha fazla kontrol sahibi olmanızı sağlar.

v3 API

E-Tablolar API v3'te yalnızca iki olası projeksiyon ayarı vardır. fullprojeksiyonu mevcut tüm bilgileri döndürür. basic ise daha küçük ve sabit bir veri alt kümesi döndürür (çalışma sayfaları, liste ve hücre feed'leri için). 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

E-Tablolar API v4 tam bir veri kümesi döndürebilir ancak E-Tablolar 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-tablo oluşturma yöntemi sunmaz. 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ı belirtmesi 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 v4, isteğe bağlı olarak e-tablo ekleyebilen, e-tablo ve e-tablo özelliklerini ayarlayabilen ve adlandırılmış aralıklar ekleyebilen bir spreadsheets.create yöntemi sağlar. Örneğin, aşağıdaki kod yeni bir e-tablo oluşturur ve bu e-tabloya "YeniBaşlık" 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 sağlamaz. Uygulamanızı, e-tablo seçimi için Google Seçici ile birlikte drive.file kapsamını kullanacak şekilde taşımanızı öneririz.

E-tabloları listelemenin gerekli olduğu durumlarda, mimeType sorgusu kullanılarak Drive API Files.list yöntemi aracılığıyla bu işlem tekrarlanabilir:

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öntemini kullanmak kısıtlı bir kapsam gerektirir.

E-tablo meta verilerini alma

E-Tablolar API v3, belirli bir e-tablodaki e-tablo 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 spreadsheets.get yöntemi, bu bilgilere ve daha fazlasına erişim sağlar.

v3 API

E-tablo feed'ine bu API uç noktasından (uygun bir yetkilendirme başlığı kullanılarak) erişilebilir:

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

Bu istek için verilen yanıt, her sayfanın verilerinin ayrı bir <entry> içinde bulunduğu şuna 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

spreadsheets.get yöntemi, e-tablo özelliklerini ve diğer meta verileri almak için kullanılabilir. Bu yöntem, Sheets API v3'ün sunduğundan çok daha fazlasını sunar. Yalnızca sayfa özelliklerini okumak istiyorsanız e-tablo hücre 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ı bir Sheet nesnesi dizisi içerir. Özellikle sayfa başlıkları ve boyut bilgileri bu nesnelerin SheetProperties öğesinin 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 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 e-tablolar ekleyebilirsiniz. İstek gövdesi kapsamında, yeni sayfanın sayfa özelliklerini belirtebilirsiniz. Tüm özellikler isteğe bağlıdır. Mevcut bir sayfa için kullanılan bir başlık sağlamak hatalıdı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, e-tablo başlıklarını ve boyutunu güncellemenize olanak tanır. Sheets API v4 de bunu sağlar ancak diğer e-tablo özelliklerini güncellemek için de kullanılabilir. Bir sayfanın boyutunu küçültmenin, kırpılan hücrelerdeki verilerin uyarı verilmeden silinmesine neden olabileceğini unutmayın.

v3 API

Bir çalışma sayfasının başlığını veya boyutunu değiştirmek için çalışma sayfası feed'ini alarak ve edit URL'si içeren istediğiniz çalışma sayfası girişini bularak başlayın. E-tablonun meta verilerini güncelleyin ve düzenleme URL'sine bir PUT isteği 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

E-tablonun boyutunu, başlığını ve diğer özelliklerini güncellemek için spreadsheets.batchUpdate yönteminde updateSheetProperties isteği gönderin. POST istek gövdesi, değiştirilecek özellikleri içermeli ve fields parametresi bu özellikleri açıkça listelemelidir (tüm mülkleri güncellemek istiyorsanız hepsini listelemek için kısayol olarak fields:"*" kullanın). Örneğin, aşağıdaki kodda, belirli bir kimliğe sahip sayfanın başlık 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.

Sayfayı silme

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

v3 API

Bir çalışma sayfasını silmek için çalışma sayfası feed'ini alarak başlayı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, sayfanın silinmesi için yalnızca sheetId öğesini içermelidir. Örneğin:

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

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

Satır verilerini alma

Liste satırları feed'i, E-Tablolar API v3'ün bir e-tablonun hücrelerindeki verilere erişmek için sunduğu iki yöntemden biridir (diğeri hücre feed'idir). Satırlar 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 olmamasına neden olan belirli varsayımlar yapar. Ö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 gösterimi kullanılarak gerekli belirli aralıklara referans verilerek e-tablo hücre verilerine erişilir. Aralıklar hücre blokları, satırların tamamı, sütunların tamamı veya sayfaların tamamı olabilir. API, birbirinden ayrı hücre gruplarına da erişebilir.

v3 API

Belirli bir çalışma sayfası için liste tabanlı bir 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 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ıt, diğerlerinin yanı sıra belirli satırlara karşılık gelen girişler içerir. Bağımsız hücrelere, (zorunlu) sayfa başlık satırında sağlanan 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>

Liste feed'inde döndürülen satırlar varsayılan olarak 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ış sorgu (sütun başlıklarıyla referans verilen) 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 spreadsheets.values.get veya spreadsheets.values.batchGet yöntemleri kullanılarak satırlar aralığa göre alınabilir. Örneğin, aşağıdaki ifade "Sayfa1"daki 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ı şuna benzer:

{
  "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 sonundaki 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ıra basittir; döndürülen values dizisini ters sırada işlemeniz yeterlidir. Okuma işlemleri için sütuna göre sıralama desteklenmez ancak e-tablodaki verileri (SortRange isteği kullanılarak) sıralayıp okumak mümkündür.

Sheets API v4'te şu anda Sheets API v3 yapılandırılmış sorguları için doğrudan bir eşdeğer yoktur. Ancak uygulamanızda ilgili verileri alıp gerektiği gibi sıralayabilirsiniz.

Yeni bir veri satırı ekleme

Her iki API'yi de kullanarak bir e-tabloya yeni bir veri satırı ekleyebilirsiniz.

v3 API

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

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

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

POST isteğinin gövdesinde, sütun başlıklarına göre referans verilen bağımsız hücrelerle birlikte eklenecek satır verileri için bir giriş bulunmalıdır:

<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 örnekte, bir e-tablonun "Sayfa1" bölümündeki son tablonun altına yeni bir veri satırı yazılıyor.

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.

Yeni veriler içeren bir satırı 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. Gerekirse bu girişin içeriğini 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 girişi istek gövdesi olarak içeren bir PUT isteği, ilgili satır girişinde sağlanan edit URL'sine 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 bir satırı düzenleyebilir ve bu satırın üzerine yazmak için spreadsheets.values.update isteği gönderebilirsiniz. Belirtilen aralık yalnızca satırdaki ilk hücreyi referans almalıdır. API, güncellenecek hücreleri istekle sağlanan değerlere göre tahmin eder. Bunun yerine birden çok hücre içeren 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önteminden de 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, spreadsheets.batchUpdate içinde UpdateCells veya RepeatCell isteklerini kullanarak hücre özelliklerini ve hücre biçimlendirmesini düzenlemenize de olanak tanır.

Satır silme

Her iki API de satır silme işlemini destekler. Silinen satırlar e-tablodan kaldırılır ve altındaki satırlar bir üst satıra taşınır.

v3 API

Bir satırı silmek için önce liste feed'inden silinecek satırı 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

Aldı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ın, siz aldıktan sonra başka bir kullanıcı tarafından güncellenip güncellenmediğine bakılmaksızın silinmesini istiyorsanız If-Match: * kullanın ve ETag'ı eklemeyin. (Bu durumda, satırı silmeden önce almanız gerekmez.)

v4 API

E-Tablolar API v4 ile satır silme işlemi, DeleteDimension isteği kullanılarak bir spreadsheet.batchUpdate yöntem çağrısıyla 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ı seçebilir. Örneğin, aşağıdaki kod, belirli bir kimliğe sahip bir sayfanın 6. satırını kaldırır (satır dizinleri sıfır tabanlı olup startIndex dahildir ve 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 değeri, spreadsheet.get yöntemi kullanılarak alınabilir.

Hücre verilerini alma

E-Tablolar API v3, e-tabloda depolanan tüm verilere temel erişim için bir hücre feed'i sağlar. Hücre feed'i, okuma erişimi için e-tablo içeriğinin tamamını veya bir dizi sorgu parametresi tarafından tanımlanan e-tablo hücrelerinin bir aralığını sağlayabilir ancak yalnızca tek bir blok olarak sağlayabilir. Ayrık aralıkların ek GET istekleri kullanılarak ayrı ayrı getirilmesi gerekir.

E-Tablolar API v4, bir e-tablodan herhangi bir hücre verisi grubunu (birden fazla ayrı aralık dahil) alabilir. E-Tablolar API'si sürüm 3, hücre içeriklerini yalnızca giriş değerleri (kullanıcı tarafından klavyeden girilen değerler) ve/veya formülün çıkışları (sayısal ise) olarak döndürebilir. E-Tablolar API'si sürüm 4 ise değerlere, formüle, biçimlendirmeye, köprülere, veri doğrulamasına ve diğer özelliklere tam erişim sağlar.

v3 API

Belirli bir çalışma sayfası için hücre tabanlı bir feed'in URL'sini belirlemek amacıyla ç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 almak için uygun bir yetkilendirme başlığı kullanarak hücre feed'i URL'sine bir 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 referans verilir. Belirli bir aralığı tek seferde getirmek için max-row, min-row, max-col ve min-col sorgu parametreleri kullanılabilir. Örneğin, aşağıdaki ifade 2. satırdan başlayarak 4. sütundaki (D) tüm hücreleri 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 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 numericValue değerini de döndürür. Örneğin, bir formül sayı sonucu verdiğinde. Örneğin, bir yanıt aşağıdakine benzer bir yapıya sahip hücre girişleri içerebilir:

<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 spreadsheets.values.get veya spreadsheets.values.batchGet yöntemini çağırarak hücre verilerini alın. Örneğin, aşağıdaki formül, "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 (sonraki 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ın yapısı 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ığı almak istiyorsanız spreadsheet.values.batchGet işlevini kullanmak daha verimlidir. Biçimlendirme gibi hücre özelliklerine erişmek istiyorsanız spreadsheet.get yöntemini kullanmanız gerekir.

Hücreleri düzenleme

E-Tablolar API'si v3, değiştirilmiş hücre girişini istek gövdesi olarak kullanarak hücre feed'ine PUT komutu göndererek 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ş, hücrenin sahip olmasını istediğiniz içeriği yansıtacak şekilde güncellenir ve ardından güncellenmiş hücre girişi istek gövdesi olarak kullanılarak düzenleme URL'sine bir PUT isteği gönderilir. Örneğin, aşağıdaki formül D2 hücresini (R2C4) SUM formülü 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üzenlemesi, spreadsheets.values.update yöntemiyle yapılabilir. Bu yöntem için ValueInputOption sorgu parametresi gerekir. Bu parametre, giriş verilerinin E-Tablolar kullanıcı arayüzüne girmiş gibi mi (USER_ENTERED) yoksa ayrıştırılmaksızın olduğu gibi mi (RAW) işleneceğini belirtir. Örneğin, aşağıdaki kod 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 istekle 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. Bir toplu istek tarafından atıfta bulunulan hücrelerin birbirine bitişik bir aralıkta olması gerekmez.

Gruptaki hücre düzenlemelerinden biri veya daha fazlası 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ı için bir hücre feed'i alın. Giriş bir toplu URL içeriyor. Bu URL'ye bir POSTisteği gönderin. Bu isteğin gövdesinde, güncellemek istediğiniz hücreleri ve yeni hücre içeriğini açıklayın. POST isteği ve istek gövdesi aşağıdakine benzer 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ı, isteği grup içinde 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ücre kimliğinin tam yolunu içeren bir href özelliğine sahip olmalıdır. Her giriş için bu alanların tümü gereklidir.

v4 API

Sheets API v4, spreadsheets.values.batchUpdate yöntemi aracılığıyla hücre değerlerinin toplu olarak düzenlenmesini sağlar.

Birden fazla hücreyi düzenlemek için istek gövdesinde veri değişiklikleri belirtilen bir POST isteği gönderebilirsiniz. Ö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 belirttiyseniz sağlanan 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.