從 Sheets API 第 3 版進行遷移

如果現有的應用程式是以 Google Sheets API v3 為基礎,則可遷移至 Google Sheets API v4。v4 版本是以 JSON 為基礎、具有更易於使用的介面,並加入 v3 版本不支援的大量功能。

本頁說明舊版 Sheets API v3 指令與在 Sheets API v4 中的對等作業之間的對應關係。對應主要著重於 spreadsheets.values 集合,這是提供直接儲存格讀取和寫入功能的功能。其他方面 (例如新增工作表或更新工作表屬性) 則是由試算表集合處理。請注意,v4 API 的 JSON 結構無法與 v3 中使用的 XML 結構回溯相容。

如要進一步瞭解 Sheets v4 API 提供的資源,請參閱 API 參考資料

標記法與條款

第 3 版 API 將特定試算表內的工作表稱為「工作表」。 這等同於 v4 API 使用的「試算表」。

使用 API 時,通常需要指定要使用的試算表試算表 ID。這類函式通常會要求所操作的工作表 ID。這些值會顯示為 API 端點網址的一部分、查詢參數,或做為要求主體的一部分。在這個頁面中,spreadsheetIdsheetId 預留位置分別代表試算表和工作表 ID。如要使用本頁所述的方法,請以這些位置中的實際 ID 取代。

第 3 版 API 也會將 ID 指派給使用清單動態饋給擷取的資料列,在此頁面中會以 rowId 預留位置表示。

授權要求

應用程式執行時,會要求使用者授予特定權限;而應用程式中設定的範圍會決定其要求的權限。

第 3 版 API

Sheets API v3 只能以單一授權範圍運作:

https://spreadsheets.google.com/feeds

這是 Google Cloud 的別名

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

任一範圍格式可以使用。

第 4 版 API

Sheets API v4 會使用下列一或多個範圍:

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

如果應用程式不需要編輯使用者的工作表或工作表屬性,請使用唯讀範圍。如果應用程式不需要一般雲端硬碟存取權,請使用試算表範圍,而非雲端硬碟範圍。

顯示設定

在較舊的 API 版本中,「visibility」一詞是指特定試算表的可用性。

第 3 版 API

Sheets API v3 會在其端點直接表示瀏覽權限。public 試算表已「發布到網路」,因此 API 可在未經授權的情況下存取,而 private 試算表則需要驗證。您可以在端點中的試算表 ID 後方指定瀏覽權限:

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

第 4 版 API

在新的 Sheets API 4 版中,沒有明確的瀏覽權限宣告。API 呼叫是透過試算表 ID 進行。如果應用程式沒有指定試算表的存取權,系統會傳回錯誤。否則,呼叫便會繼續進行。

投影

Sheets API v3 使用的「投影」一詞指的是特定 API 呼叫所傳回的一組資料,可能是所有 API 呼叫傳回的資料,或是在 API 中定義的固定子集。Sheets API 第 4 版並未使用投影功能,而可讓您進一步控管傳回的資料。

第 3 版 API

Sheets API v3 只提供兩種投影設定。full 投影會傳回所有可用資訊,而 basic 會傳回較小、固定的資料子集 (用於工作表、清單和儲存格動態饋給)。如同瀏覽權限,必須在 API 端點中指定投影 (在顯示設定之後):

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

basic 投影提供的較小資料子集有助於提高程式碼的效率,但無法自訂。

第 4 版 API

雖然 Sheets API v4 可以傳回完整的資料集,但不會定義與 Sheets API v3 的 basic 瀏覽權限設定類似的固定子集。試算表集合中的方法會使用 fields 查詢參數,來限制傳回的資料量。

例如,下列查詢只會傳回特定試算表中所有工作表的標題:

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

建立試算表

第 3 版 API

不過,Sheets API 第 3 版不提供建立新試算表的方式,請改用 Drive API Files.create 方法。這需要應用程式宣告 https://www.googleapis.com/auth/drive 範圍。

第 4 版 API

Drive API Files.create 方法也可以與 Sheets API v4 搭配使用,但需要應用程式提供 https://www.googleapis.com/auth/drive 範圍。

您還可以透過 Sheets API v4 提供 spreadsheets.create 方法,不過也可視需要新增試算表、設定試算表和工作表屬性,以及新增已命名的範圍。舉例來說,下列指令會建立一個新試算表,並命名為「NewTitle」:

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

列出已驗證使用者的試算表

第 3 版 API

Sheets API v3 動態饋給可讓應用程式擷取已驗證使用者可存取的所有試算表清單。試算表動態饋給端點如下:

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

第 4 版 API

Sheets API 第 4 版不提供這項特定作業。建議您遷移應用程式,以使用 drive.file 範圍和 Google Picker 來選取試算表。

如果需要列出試算表,則可透過 Drive API Files.list 方法使用 mimeType 查詢進行複製:

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

如要使用 Drive API files.list 方法列出使用者的所有試算表,就必須使用 restricted 範圍。

擷取工作表中繼資料

Sheets API v3 提供動態饋給,方便您存取指定試算表內的工作表中繼資料 (可透過個別動態饋給存取資料列和儲存格資料)。中繼資料包含工作表標題和大小資訊等資訊。

Sheets API v4 spreadsheets.get 方法提供這項資訊,以及執行其他功能。

第 3 版 API

您可以從這個 API 端點存取工作表動態饋給 (使用適當的授權標頭):

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

這項要求的回應結構與此類似,每個工作表的資料都會包含在一個獨立的 <entry> 中:

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

第 4 版 API

spreadsheets.get 方法可用於取得工作表屬性和其他中繼資料,這比使用 Sheets API v3 提供的還多。如果您只想讀取工作表屬性,請將 includeGridData 查詢參數設為 false 以防止納入試算表儲存格資料:

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

Spreadsheet 回應包含 Sheet 物件的陣列,您可在這些物件的 SheetProperties 元素下方找到工作表標題和大小資訊。例如:

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

在試算表中新增工作表

這兩種 API 都能讓您在現有試算表中加入新工作表。

第 3 版 API

Sheets API v3 可以發出下列 (已驗證) POST 要求,在試算表中新增工作表。您可以指定新工作表的大小:

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>

第 4 版 API

如要新增試算表,請在 spreadsheets.batchUpdate 方法中提交 AddSheet 要求。做為要求主體的一部分,您可以指定新工作表的工作表屬性;所有屬性皆為選用屬性。如果提供現有工作表的標題,就會發生錯誤。

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

變更工作表標題和大小

Sheets API v3 可讓您更新工作表標題與大小;Sheets API v4 也適用,但也可以用來更新其他工作表屬性。請注意,縮減工作表大小可能會導致裁剪儲存格中的資料在無預警的情況下遭到刪除。

第 3 版 API

如要變更工作表的標題或大小,請先擷取工作表動態饋給,並找出需要的工作表項目,其中包含 edit 網址。更新工作表的中繼資料,並以 PUT 要求的主體傳送至編輯網址。例如:

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>

第 4 版 API

如要更新大小、標題和其他工作表屬性,請在 spreadsheets.batchUpdate 方法中提交 updateSheetProperties 要求。POST 要求主體應包含要變更的屬性,而 fields 參數應明確列出這些屬性 (如要更新所有屬性,請使用 fields:"*" 做為列出所有屬性的簡寫方法)。例如,下列指令會指定應針對具有指定 ID 的工作表更新工作表標題和大小屬性:

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

如要擷取工作表的 sheetId,請使用試算表的 spreadsheets.get 方法。

刪除工作表

這兩種 API 都可以移除特定試算表中的工作表。

第 3 版 API

如要刪除工作表,請先擷取工作表動態饋給,然後對目標工作表項目的 edit 網址傳送 DELETE 要求。

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

第 4 版 API

如要刪除工作表,請在 spreadsheets.batchUpdate 方法中提出 DeleteSheet 要求。POST 要求主體只能包含待刪除工作表的 sheetId。例如:

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

如要擷取個別工作表的 sheetId,請使用試算表 spreadsheets.get 方法。

擷取資料列

清單列動態饋給是 Sheets API v3 提供的兩種方法之一,可用於存取試算表儲存格中的資料 (另一種是儲存格動態饋給)。資料列動態饋給旨在支援常見的試算表作業 (依資料列讀取資料列、附加資料列、排序),但會做出某些假設,因此不適合某些工作。具體來說,清單動態饋給會假設空白列是動態饋給終止,且工作表的第一列有必要的標頭。

相反地,Sheets API v4 不會使用特定資料列的存取方法。請改為透過 A1 標記法參照特定範圍來存取工作表儲存格資料。範圍可以是儲存格區塊、整個資料列、整個資料欄或整個工作表。這個 API 也能存取不連貫的儲存格組合。

第 3 版 API

如要判斷特定工作表的清單式動態饋給網址,請擷取工作表動態饋給,然後在感興趣的工作表項目中找到清單動態饋給網址。

如要擷取清單式動態饋給,請使用適當的授權標頭傳送 GET 要求至清單動態饋給網址。例如:

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

此要求的回應包含對應特定資料列的項目以及其他項目。個別儲存格會由 (必要) 工作表標題列提供的名稱參照。例如,以下是單一資料列項目:

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

根據預設,清單動態饋給傳回的資料列會按資料列順序傳回。 Sheets API v3 提供用於變更訂單的查詢參數。

反向順序:

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

依特定資料欄排序:

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

Sheets API v3 也可讓您透過結構化查詢 (依欄標題參照) 篩選特定資料列:

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

第 4 版 API

使用 Sheets API v4 版本時,可使用 spreadsheets.values.getspreadsheets.values.batchGet 方法依範圍擷取資料列。舉例來說,以下會傳回「Sheet1」中的所有列:

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

這項要求的回應結構與以下類似:

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

擷取整個資料列、資料欄或工作表時,結尾的空白儲存格不會包含在回應中。

Sheets API v4 版對於 Sheets API v3 提供的資料列順序查詢參數沒有同等項目。反向排序十分重要,只要反向處理傳回的 values 陣列即可。讀取功能不支援依資料欄排序,但您可以在工作表 (使用 SortRange) 要求中排序資料,然後讀取該資料。

Sheets API v4 版目前無法提供與 Sheets API v3 結構化查詢直接對等的功能。不過,您可以擷取相關資料,並視需要在應用程式中排序。

新增資料列

你可以使用任一 API 將資料列新增至工作表。

第 3 版 API

如要判斷特定工作表的清單式動態饋給網址,請擷取學習單動態饋給,然後在感興趣的工作表項目中尋找張貼網址。

如要新增資料列,請使用適當的授權標頭傳送 POST 要求至貼文網址。例如:

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

POST 要求的主體應包含要新增的資料列資料項目,具有資料欄標頭參照的個別儲存格:

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

新資料列會附加到指定工作表的結尾。

第 4 版 API

在 Sheets API 第 4 版中,您可以使用 spreadsheets.values.append 方法附加資料列。以下範例會在試算表的「Sheet1」中,在最後一個資料表下方寫入新的資料列。

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

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

此外,Sheets API v4 也可讓您在 spreadsheets.batchUpdate 中使用 AppendCells 要求,附加具有特定屬性和格式的儲存格。

編輯包含新資料的資料列

這兩種 API 均允許將資料列資料更新為新的值。

第 3 版 API

如要編輯資料列,請檢查清單動態饋給,找出要更新的資料列所在的項目。視需要更新該項目的內容。請確認您使用的項目中的 ID 值與現有項目的 ID 完全相符。

項目更新完成後,請使用適當的授權標頭,將含有項目做為要求主體的 PUT 要求,傳送至該資料列項目提供的 edit 網址。例如:

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>

第 4 版 API

在 Sheets API v4 中,您可以使用待編輯資料列的 A1 標記法編輯資料列,並發出 spreadsheets.values.update 要求來覆寫該資料列。指定的範圍只需要參照資料列中的第一個儲存格;API 會根據要求提供的值來推測要更新的儲存格。如果您改為指定多儲存格的範圍,則您提供的值不得超出該範圍;如果不是,API 就會傳回錯誤。

下列要求和要求主體範例會將資料新增至「Sheet1」的第四個資料列:

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

您也可以使用 spreadsheet.values.batchUpdate 方法更新資料列資料;如果您要進行多個資料列或儲存格更新,使用這個方法會更有效率。

此外,Sheets API v4 也可讓您在 spreadsheets.batchUpdate 中使用 UpdateCellsRepeatCell 要求,編輯儲存格屬性和儲存格格式設定。

刪除資料列

這兩種 API 都支援刪除資料列。系統會將刪除的列從試算表中移除,並將資料列下方的資料列往上移。

第 3 版 API

如要刪除資料列,請先從清單動態饋給擷取要刪除的資料列,然後傳送 DELETE 要求至該資料列項目提供的 edit 網址。這就是用於更新資料列的網址。

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

如要確保不刪除其他用戶端變更了的資料列,請納入含有原始資料列 ETag 值的 HTTP if-Match 標頭。您可以檢查項目元素的 gd:etag 屬性,藉此判斷原始資料列的 ETag 值。

如果您想刪除該資料列,無論擷取後是否有其他人更新,只要使用 if-Match: * 即可,不要納入 ETag。(在此情況下,您不必擷取該資料列,即可將其刪除)。

第 4 版 API

透過 Sheets API v4 刪除資料列,是由 spreadsheet.batchUpdate 方法呼叫,使用 DeleteDimension 要求來處理。這項要求也可用於移除資料欄和開發人員,並選擇只移除資料列或資料欄的一部分。例如,下列指令會移除具有指定 ID 的工作表第 6 個資料列 (資料列索引從零開始,且包含 startIndex,且不含 endIndex):

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

您可以使用 spreadsheet.get 方法擷取工作表的 sheetId

擷取儲存格資料

Sheets API v3 提供儲存格動態饋給,可讓您存取儲存在試算表中的所有資料。為取得讀取權限,儲存格動態饋給可以提供整個工作表內容,或由一組查詢參數定義的工作表儲存格範圍,但僅做為單一區塊。如要擷取不連貫的範圍,必須使用額外的 GET 要求另外擷取。

Sheets API v4 可以從工作表擷取任何一組儲存格資料 (包括多個不相交的範圍)。Sheets API v3 只能將儲存格內容傳回做為輸入值 (使用者在鍵盤中輸入的內容) 和/或公式的輸出結果 (如果為數字)。Sheets API v4 則可授予值、公式、格式設定、超連結、資料驗證和其他屬性的完整存取權。

第 3 版 API

如要判斷特定工作表的儲存格動態饋給網址,請檢查工作表動態饋給,然後在需要的工作表項目中找出儲存格動態饋給網址。

如要擷取儲存格式動態饋給,請使用適當的授權標頭傳送 GET 要求至儲存格動態饋給網址。例如:

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

可以使用列號和欄號參照儲存格。您可以使用 max-rowmin-rowmax-colmin-col 查詢參數來擷取單一特定範圍。例如,下列程式碼會擷取欄 4 (D) 中的所有儲存格,從第 2 列開始:

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

Sheets API v3 會傳回已擷取儲存格的 inputValue,即使用者在 Google 試算表使用者介面中輸入的值,藉此操控儲存格。inputValue 可以是常值或公式。API 有時也會傳回 numericValue;例如,公式會產生數字。舉例來說,回應可能包含結構如下的儲存格項目:

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

第 4 版 API

分別針對要搜尋的範圍或範圍呼叫 spreadsheets.values.getspreadsheets.values.batchGet 方法。例如,下列程式碼會傳回「Sheet2」欄 D 中儲存格 D 的儲存格,從第 2 列開始,依欄-主要順序,然後傳回輸入的公式 (省略結尾儲存格):

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

這項要求的回應結構與下方類似:

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

如果想要擷取多個儲存格資料範圍,使用 spreadsheet.values.batchGet 為更有效率。如要存取儲存格屬性 (例如格式),則必須使用 spreadsheet.get 方法。

編輯儲存格

Sheets API v3 可讓您編輯儲存格內容,方法是對儲存格動態饋給發出 PUT 指令,並將修改後的儲存格項目當做要求主體。

相較之下, Sheets API v4 版本提供 spreadsheets.values.updatespreadsheets.values.batchUpdate 方法。

第 3 版 API

如要編輯單一儲存格的內容,請先在儲存格動態饋給中找出該儲存格的項目。項目包含編輯網址。請更新項目以反映您希望儲存格包含的內容,然後對編輯網址發出 PUT 要求,並將更新後的儲存格項目做為要求的主體。舉例來說,以下更新儲存格 D2 (R2C4) 以加入 SUM 公式:

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>

第 4 版 API

您可以透過 spreadsheets.values.update 方法在 Sheets API 第 4 版中編輯單一儲存格。這個方法需要使用 ValueInputOption 查詢參數,該參數會指定輸入資料是視為輸入至試算表 UI (USER_ENTERED),還是未剖析且採用原樣處理 (RAW)。舉例來說,下列公式會以公式更新儲存格 D2:

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

如果您要進行多項儲存格編輯作業,請使用 spreadsheets.values.batchUpdate 方法透過單一要求進行發布。

透過批次要求編輯多個儲存格

這兩個 API 可讓您透過單一 (批次) 要求變更多個儲存格的內容。批次要求所參照的儲存格不需要在連續範圍內。

如果批次中一或多個儲存格編輯作業失敗,Sheet API v3 可讓其他人順利編輯。不過,如果任何批次更新失敗,Sheets API v4 就會傳回錯誤,且在這種情況下不會套用任何更新。

第 3 版 API

如要編輯多個儲存格,請先擷取工作表的儲存格動態饋給。這個項目含有批次網址。請傳送 POST 要求至這個網址,並附上要求主體來說明您要更新的儲存格和新儲存格內容。POST 要求和要求主體的結構與下列類似:

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 欄位應用來識別批次中的要求。編輯儲存格時,「batch:operation」欄位應為 updategs:cell 會依列和欄編號識別儲存格,並提供插入該儲存格的新資料。id 包含要更新儲存格的完整網址。link 必須具備包含儲存格 ID 完整路徑的 href 屬性。每個項目都必須填寫上述所有欄位。

第 4 版 API

Sheets API v4 可透過 spreadsheets.values.batchUpdate 方法批次編輯儲存格值。

如要編輯多個儲存格,您可以發出 POST 要求,並在要求主體中指定資料變更。例如:

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

如果將單一儲存格指定為範圍,則提供的所有值都會寫入工作表,從該儲存格開頭做為左上方座標。如果您改為指定多儲存格範圍,則您提供的值必須與該範圍完全相符;如果不是,API 就會傳回錯誤。