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.