Di chuyển từ API Trang tính v3

Nếu đang có ứng dụng dựa trên API Google Trang tính phiên bản 3, thì bạn có thể chuyển sang API Google Trang tính phiên bản 4. Phiên bản v4 dựa trên JSON, có giao diện dễ sử dụng hơn và bổ sung một lượng đáng kể các chức năng không có trong phiên bản v3.

Trang này cung cấp mối liên kết giữa các lệnh cũ hơn trong API Trang tính phiên bản 3 và các thao tác tương đương trong API Trang tính phiên bản 4. Việc ánh xạ tập trung phần lớn vào bộ sưu tập spreadsheets.values, cung cấp chức năng đọc và ghi trực tiếp ô. Các khía cạnh khác, chẳng hạn như thêm trang tính hoặc cập nhật thuộc tính trang tính do bộ sưu tập bảng tính xử lý. Lưu ý rằng cấu trúc JSON của API phiên bản 4 không tương thích ngược với các cấu trúc XML được sử dụng trong phiên bản 3.

Để biết thêm thông tin về các tài nguyên có trong API Trang tính phiên bản 4, hãy xem Tài liệu tham khảo API.

Ký hiệu và điều khoản

API v3 đề cập đến các trang tính trong một bảng tính cụ thể ở dạng "trang tính". Thuật ngữ này đồng nghĩa với thuật ngữ "trang tính" mà API phiên bản 4 sử dụng.

API thường yêu cầu bạn chỉ định mã nhận dạng bảng tính của bảng tính mà bạn đang làm việc. Các thẻ này cũng thường yêu cầu mã nhận dạng của trang tính bị thao tác. Các giá trị này xuất hiện dưới dạng một phần của URL điểm cuối của API, dưới dạng tham số truy vấn hoặc trong nội dung yêu cầu. Trên trang này, phần giữ chỗ spreadsheetIdsheetId lần lượt tham chiếu đến mã nhận dạng bảng tính và mã trang tính. Khi sử dụng các phương thức được mô tả trên trang này, hãy thay thế các mã nhận dạng thực tế ở những vị trí này.

API phiên bản 3 cũng chỉ định một mã nhận dạng cho các hàng được truy xuất bằng nguồn cấp dữ liệu danh sách; mã này được thể hiện trong trang này bằng phần giữ chỗ rowId.

Cấp phép cho yêu cầu

Khi chạy, ứng dụng của bạn sẽ yêu cầu người dùng cấp một số quyền nhất định; phạm vi bạn chỉ định trong ứng dụng sẽ xác định những quyền mà ứng dụng yêu cầu.

API phiên bản 3

API Trang tính phiên bản 3 hoạt động với một phạm vi uỷ quyền duy nhất:

https://spreadsheets.google.com/feeds

là bí danh của

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

Bạn có thể sử dụng một trong hai định dạng phạm vi.

API phiên bản 4

Trang tính API phiên bản 4 sử dụng một hoặc nhiều nhóm phạm vi sau đây:

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

Sử dụng phạm vi chỉ đọc nếu ứng dụng của bạn không cần chỉnh sửa trang tính hoặc thuộc tính trang tính của người dùng. Hãy sử dụng phạm vi bảng tính thay vì phạm vi Drive nếu ứng dụng không cần quyền truy cập chung vào Drive.

Chế độ hiển thị

Trong các phiên bản API cũ, thuật ngữ chế độ hiển thị được dùng để đề cập đến khả năng sử dụng một bảng tính nhất định.

API phiên bản 3

API Trang tính phiên bản 3 cho thấy chế độ hiển thị ngay trong các điểm cuối. Một bảng tính public đã được "Công bố lên web" nên API có thể truy cập mà không được phép, trong khi bảng tính private yêu cầu xác thực. Chế độ hiển thị được chỉ định trong điểm cuối sau mã nhận dạng bảng tính:

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

API phiên bản 4

Trong API Trang tính phiên bản 4 mới, chúng tôi không khai báo rõ ràng về chế độ hiển thị. Lệnh gọi API được thực hiện bằng mã bảng tính. Nếu ứng dụng không có quyền truy cập vào bảng tính đã chỉ định, thì hệ thống sẽ trả về lỗi. Nếu không, lệnh gọi sẽ tiếp tục.

Dự kiến

Thuật ngữ phép chiếu mà API Trang tính phiên bản 3 sử dụng để chỉ tập hợp dữ liệu được một lệnh gọi API nhất định trả về, có thể là toàn bộ hoặc một tập hợp con cố định được xác định trong API. Trang tính API phiên bản 4 không sử dụng tính năng chiếu; thay vào đó, tính năng này cho phép bạn kiểm soát tốt hơn dữ liệu nào được trả về.

API phiên bản 3

Chỉ có hai chế độ cài đặt phép chiếu có thể áp dụng trong API Trang tính phiên bản 3. Phép chiếu full trả về tất cả thông tin có sẵn, trong khi basic trả về một tập hợp con dữ liệu nhỏ hơn và cố định (cho trang tính, danh sách và nguồn cấp dữ liệu ô). Giống như chế độ hiển thị, phép chiếu phải được chỉ định trong điểm cuối API (sau chế độ cài đặt chế độ hiển thị):

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

Tập hợp con dữ liệu nhỏ hơn do phép chiếu basic cung cấp có giá trị giúp làm cho mã hiệu quả hơn, nhưng không thể tuỳ chỉnh được.

API phiên bản 4

Mặc dù API Trang tính phiên bản 4 có thể trả về một tập dữ liệu đầy đủ, nhưng API này không xác định các tập hợp con cố định tương tự như chế độ cài đặt chế độ hiển thị basic của API Trang tính phiên bản 3. Các phương thức trong thu thập bảng tính hạn chế lượng dữ liệu mà phương thức trả về thông qua việc sử dụng tham số truy vấn trường.

Ví dụ: truy vấn sau đây chỉ trả về tiêu đề của tất cả trang tính trong một bảng tính cụ thể:

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

Tạo bảng tính

API phiên bản 3

Trang tính API v3 không cung cấp phương tiện để tạo bảng tính mới; thay vào đó, bạn có thể sử dụng phương thức API Drive Files.create để tạo tệp bảng tính mới. Điều này yêu cầu ứng dụng khai báo phạm vi https://www.googleapis.com/auth/drive.

API phiên bản 4

Bạn cũng có thể sử dụng phương thức API Drive Files.create với API Trang tính phiên bản 4, nhưng yêu cầu ứng dụng cung cấp phạm vi https://www.googleapis.com/auth/drive.

Thay thế tương đương, API Trang tính phiên bản 4 cung cấp phương thức spreadsheets.create. Phương thức này cũng có thể thêm trang tính, đặt thuộc tính của bảng tính và trang tính cũng như thêm các dải ô được đặt tên (không bắt buộc). Ví dụ: đoạn mã sau đây sẽ tạo một bảng tính mới và đặt tên là "NewTitle":

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

Liệt kê bảng tính cho người dùng đã xác thực

API phiên bản 3

Nguồn cấp dữ liệu API Trang tính phiên bản 3 cho phép ứng dụng truy xuất danh sách tất cả các bảng tính mà người dùng đã xác thực có thể truy cập. Điểm cuối của nguồn cấp dữ liệu bảng tính là:

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

API phiên bản 4

API Trang tính phiên bản 4 không cung cấp thao tác cụ thể này. Bạn nên di chuyển ứng dụng của mình để sử dụng phạm vi drive.file kết hợp với Bộ chọn của Google để lựa chọn bảng tính.

Trong trường hợp cần phải có bảng tính liệt kê, bạn có thể sao chép dữ liệu đó qua phương thức Drive API Files.list bằng phương thức truy vấn mimeType:

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

Để sử dụng phương thức API Drive.list để liệt kê tất cả bảng tính của người dùng, bạn phải có phạm vi bị hạn chế.

Truy xuất siêu dữ liệu trang tính

Sheets API v3 cung cấp một nguồn cấp dữ liệu để truy cập vào siêu dữ liệu của trang tính có trong một bảng tính nhất định (truy cập vào dữ liệu hàng và ô thông qua một nguồn cấp dữ liệu riêng). Siêu dữ liệu bao gồm các thông tin như tiêu đề trang tính và thông tin về kích thước.

Phương thức spreadsheets.get của API Trang tính v4 cho phép truy cập vào thông tin này và nhiều thông tin khác.

API phiên bản 3

Bạn có thể truy cập nguồn cấp dữ liệu trang tính từ điểm cuối API này (bằng cách sử dụng một tiêu đề uỷ quyền thích hợp):

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

Phản hồi cho yêu cầu này có cấu trúc tương tự như sau, với dữ liệu của mỗi trang tính được chứa trong một <entry> riêng:

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

API phiên bản 4

Bạn có thể sử dụng phương thức spreadsheets.get để lấy các thuộc tính trang tính và các siêu dữ liệu khác, nhiều hơn nhiều so với những gì được cung cấp khi dùng API Trang tính phiên bản 3. Nếu bạn chỉ muốn đọc các thuộc tính của trang tính, hãy đặt tham số truy vấn includeGridData thành false để ngăn việc thêm dữ liệu ô trong bảng tính:

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

Phản hồi Spreadsheet chứa một mảng các đối tượng Sheet; bạn có thể tìm thấy tiêu đề trang tính và thông tin cụ thể về kích thước trong phần tử SheetProperties của các đối tượng này. Ví dụ:

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

Thêm trang tính vào bảng tính

Cả hai API đều cho phép bạn thêm trang tính mới vào bảng tính hiện có.

API phiên bản 3

API Trang tính phiên bản 3 có thể thêm trang tính mới vào bảng tính bằng cách đưa ra yêu cầu POST (đã xác thực) sau đây. Bạn có thể chỉ định kích thước của trang tính mới:

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>

API phiên bản 4

Bạn có thể thêm trang tính mới bằng cách thực hiện yêu cầu AddSheet trong phương thức spreadsheets.batchUpdate. Trong phần nội dung yêu cầu, bạn có thể chỉ định các thuộc tính trang tính cho trang tính mới; tất cả thuộc tính đều không bắt buộc. Việc cung cấp tiêu đề được sử dụng cho trang tính hiện có sẽ là lỗi xảy ra.

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

Thay đổi kích thước và tiêu đề trang tính

API Trang tính v3 cho phép bạn cập nhật tiêu đề và kích thước trang tính; API Trang tính v4 cũng cho phép thực hiện điều này, nhưng cũng có thể dùng để cập nhật các thuộc tính trang tính khác. Lưu ý rằng việc giảm kích thước của trang tính có thể khiến dữ liệu trong các ô bị cắt có thể bị xoá mà không có cảnh báo.

API phiên bản 3

Để thay đổi tiêu đề hoặc kích thước của một trang tính, hãy bắt đầu bằng cách truy xuất nguồn cấp dữ liệu trang tính rồi tìm mục nhập trang tính mong muốn, trong đó có chứa URL edit. Cập nhật siêu dữ liệu của trang tính rồi gửi dưới dạng phần nội dung của yêu cầu PUT cho URL chỉnh sửa. Ví dụ:

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>

API phiên bản 4

Để cập nhật kích thước, tiêu đề và các thuộc tính khác trong trang tính, hãy thực hiện yêu cầu updateSheetProperties trong phương thức spreadsheets.batchUpdate. Nội dung yêu cầu POST phải chứa các thuộc tính cần thay đổi và tham số fields phải liệt kê rõ ràng các thuộc tính đó (nếu bạn muốn cập nhật tất cả thuộc tính, hãy sử dụng fields:"*" để viết tắt để liệt kê tất cả các thuộc tính đó). Ví dụ: đoạn mã sau đây chỉ định các thuộc tính tiêu đề trang tính và kích thước phải được cập nhật cho trang tính có mã nhận dạng đã cho:

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

Để truy xuất sheetId của một trang tính, hãy sử dụng phương thức spreadsheets.get trong bảng tính.

Xoá trang tính

Một trong hai API có thể xoá trang tính khỏi một bảng tính nhất định.

API phiên bản 3

Để xoá một trang tính, hãy bắt đầu bằng cách truy xuất nguồn cấp dữ liệu trang tính, sau đó gửi yêu cầu DELETE trên URL edit của mục nhập trang tính mục tiêu.

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

API phiên bản 4

Để xoá một trang tính, hãy thực hiện một DeleteSheet yêu cầu trong phương thức spreadsheets.batchUpdate. Nội dung yêu cầu POST chỉ được chứa sheetId cho trang tính cần xoá. Ví dụ:

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

Để truy xuất sheetId của một trang tính riêng lẻ, hãy sử dụng phương thức spreadsheets.get của bảng tính.

Truy xuất dữ liệu hàng

Nguồn cấp dữ liệu hàng danh sách là một trong 2 phương thức mà API Trang tính phiên bản 3 cung cấp để truy cập vào dữ liệu trong các ô của bảng tính (phương thức còn lại là nguồn cấp dữ liệu ô). Nguồn cấp dữ liệu hàng nhằm hỗ trợ các thao tác phổ biến trong bảng tính (đọc từng hàng, thêm hàng, sắp xếp), nhưng đưa ra một số giả định khiến nguồn cấp dữ liệu này không phù hợp với một số tác vụ. Cụ thể, nguồn cấp dữ liệu danh sách giả định rằng các hàng trống là các điểm kết thúc của nguồn cấp dữ liệu và các tiêu đề bắt buộc hiển thị ở hàng đầu tiên của một trang tính.

Ngược lại, Sheets API v4 không sử dụng các phương thức truy cập dành riêng cho hàng. Thay vào đó, dữ liệu ô trang tính được truy cập bằng cách tham chiếu đến các dải ô cụ thể bắt buộc sử dụng ký hiệu A1. Dải ô có thể là các khối ô, toàn bộ hàng, toàn bộ cột hoặc toàn bộ trang tính. API cũng có thể truy cập vào các tập hợp ô rời nhau.

API phiên bản 3

Để xác định URL của nguồn cấp dữ liệu dựa trên danh sách cho một trang tính nhất định, hãy truy xuất nguồn cấp dữ liệu trang tính và tìm URL nguồn cấp dữ liệu danh sách trong mục bạn quan tâm trong trang tính.

Để truy xuất nguồn cấp dữ liệu dựa trên danh sách, hãy gửi yêu cầu GET đến URL nguồn cấp dữ liệu danh sách, bằng cách sử dụng một tiêu đề uỷ quyền thích hợp. Ví dụ:

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

Phản hồi cho yêu cầu này chứa, ngoài các nội dung khác, các mục nhập tương ứng với các hàng cụ thể. Các ô riêng lẻ được tham chiếu bằng các tên được cung cấp trong hàng tiêu đề của trang tính (bắt buộc). Ví dụ: đây là một mục nhập dạng hàng:

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

Theo mặc định, các hàng được trả về trong nguồn cấp dữ liệu danh sách được trả về theo thứ tự hàng. API Trang tính phiên bản 3 cung cấp các tham số truy vấn để thay đổi thứ tự đó.

Đảo ngược thứ tự:

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

Sắp xếp theo một cột cụ thể:

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

Trang tính API v3 cũng cho phép lọc các hàng cụ thể thông qua truy vấn có cấu trúc (được tham chiếu theo tiêu đề cột):

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

API phiên bản 4

Với API Trang tính phiên bản 4, bạn có thể truy xuất các hàng theo dải ô bằng cách sử dụng phương thức spreadsheets.values.getspreadsheets.values.batchGet Ví dụ: lệnh sau đây trả về tất cả các hàng trong "Sheet1":

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

Phản hồi cho yêu cầu này có cấu trúc tương tự như:

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

Các ô trống ở cuối không được đưa vào phản hồi khi truy xuất toàn bộ hàng, cột hoặc trang tính.

API Trang tính phiên bản 4 không có phiên bản tương đương với các tham số truy vấn theo thứ tự hàng do API Trang tính phiên bản 3 cung cấp. Thứ tự đảo ngược không quan trọng; chỉ cần xử lý mảng values được trả về theo thứ tự đảo ngược. Sắp xếp theo cột không được hỗ trợ cho lượt đọc, nhưng bạn có thể sắp xếp dữ liệu trong trang tính (bằng cách sử dụng yêu cầu SortRange) rồi đọc dữ liệu đó.

API Trang tính phiên bản 4 hiện không có phiên bản tương đương trực tiếp cho các truy vấn có cấu trúc API Trang tính phiên bản 3. Tuy nhiên, bạn có thể truy xuất dữ liệu liên quan và sắp xếp dữ liệu đó nếu cần trong ứng dụng của mình.

Thêm hàng dữ liệu mới

Bạn có thể thêm một hàng dữ liệu mới vào trang tính bằng một trong hai API.

API phiên bản 3

Để xác định URL của nguồn cấp dữ liệu dựa trên danh sách cho một trang tính nhất định, hãy truy xuất nguồn cấp dữ liệu trang tính và tìm URL của bài đăng trong mục bạn quan tâm trong trang tính.

Để thêm một hàng dữ liệu, hãy gửi yêu cầu POST đến URL của bài đăng, sử dụng một tiêu đề uỷ quyền thích hợp. Ví dụ:

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

Nội dung của yêu cầu POST phải chứa một mục để dữ liệu hàng cần thêm vào, với các ô riêng lẻ được tiêu đề cột tham chiếu:

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

Các hàng mới sẽ được thêm vào cuối trang tính được chỉ định.

API phiên bản 4

Với API Trang tính phiên bản 4, bạn có thể thêm các hàng bằng phương thức spreadsheets.values.append. Ví dụ sau đây ghi một hàng dữ liệu mới bên dưới bảng cuối cùng trong "Sheet1" của bảng tính.

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

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

Ngoài ra, API Trang tính phiên bản 4 cũng cho phép bạn thêm các ô có các thuộc tính và định dạng cụ thể bằng cách sử dụng yêu cầu AppendCells trong một spreadsheets.batchUpdate.

Chỉnh sửa một hàng bằng dữ liệu mới

Cả hai API đều cho phép cập nhật dữ liệu hàng bằng các giá trị mới.

API phiên bản 3

Để chỉnh sửa một hàng dữ liệu, hãy kiểm tra nguồn cấp dữ liệu danh sách để tìm mục nhập cho hàng đó mà bạn muốn cập nhật. Cập nhật nội dung của mục đó nếu cần. Hãy đảm bảo rằng giá trị mã nhận dạng trong mục nhập bạn sử dụng khớp chính xác với mã nhận dạng của mục nhập hiện có.

Sau khi mục nhập được cập nhật, hãy gửi yêu cầu PUT có mục nhập là nội dung yêu cầu đến URL edit được cung cấp trong mục nhập hàng đó, bằng cách sử dụng tiêu đề uỷ quyền thích hợp. Ví dụ:

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>

API phiên bản 4

Với API Trang tính phiên bản 4, bạn có thể chỉnh sửa một hàng bằng cách sử dụng ký hiệu A1 của hàng mà bạn muốn chỉnh sửa và đưa ra yêu cầu spreadsheets.values.update để ghi đè hàng đó. Dải ô được chỉ định chỉ cần tham chiếu đến ô đầu tiên trong hàng. API dự đoán các ô cần cập nhật dựa trên các giá trị được cung cấp cùng với yêu cầu. Thay vào đó, nếu bạn chỉ định một dải ô nhiều ô, các giá trị bạn cung cấp phải nằm vừa trong dải ô đó; nếu không, API sẽ trả về lỗi.

Yêu cầu và nội dung yêu cầu mẫu sau đây sẽ thêm dữ liệu vào hàng thứ tư của "Sheet1":

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

Bạn cũng có thể cập nhật dữ liệu hàng bằng phương thức spreadsheet.values.batchUpdate. Phương thức này sẽ hiệu quả hơn nếu bạn cập nhật nhiều hàng hoặc ô.

Ngoài ra, API Trang tính phiên bản 4 cũng cho phép bạn chỉnh sửa các thuộc tính ô và định dạng ô bằng cách sử dụng các yêu cầu UpdateCells hoặc RepeatCell trong một spreadsheets.batchUpdate.

Xoá hàng

Cả hai API đều hỗ trợ tính năng xoá hàng. Một hàng bị xoá sẽ bị loại bỏ khỏi bảng tính và các hàng bên dưới nó được đẩy lên một hàng.

API phiên bản 3

Để xoá một hàng, trước tiên hãy truy xuất hàng đó để xoá khỏi nguồn cấp dữ liệu danh sách, sau đó gửi yêu cầu DELETE đến URL edit được cung cấp trong mục nhập của hàng. Đây cũng là URL dùng để cập nhật hàng.

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

Nếu bạn muốn đảm bảo rằng mình không xoá một hàng đã bị một ứng dụng khác thay đổi kể từ khi bạn truy xuất hàng đó, hãy bao gồm tiêu đề HTTP If-Match chứa giá trị ETag của hàng ban đầu. Bạn có thể xác định giá trị ETag của hàng ban đầu bằng cách kiểm tra thuộc tính gd:etag của phần tử mục nhập.

Nếu bạn muốn xoá hàng bất kể người khác có cập nhật hàng đó kể từ khi bạn truy xuất hay không, hãy sử dụng If-Match: * và không thêm ETag. (Trong trường hợp này, bạn không cần truy xuất hàng trước khi xoá.)

API phiên bản 4

Việc xoá hàng bằng API Trang tính phiên bản 4 được xử lý bằng lệnh gọi phương thức spreadsheet.batchUpdate, sử dụng yêu cầu DeleteDimension. Bạn cũng có thể sử dụng yêu cầu này để xoá các cột và nhà phát triển và chọn chỉ xoá một phần của hàng hoặc cột. Ví dụ: Thao tác sau đây sẽ xoá hàng thứ 6 của trang tính có mã nhận dạng đã cho (các chỉ mục hàng được dựa trên 0, trong đó bao gồm startIndex và endIndex):

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

Bạn có thể truy xuất sheetId của một trang tính bằng phương thức spreadsheet.get.

Truy xuất dữ liệu ô

Sheets API v3 cung cấp một nguồn cấp dữ liệu ô để có quyền truy cập cơ bản vào tất cả dữ liệu được lưu trữ trong một bảng tính. Đối với quyền đọc, nguồn cấp dữ liệu ô có thể cung cấp toàn bộ nội dung trang tính hoặc một dải ô của trang tính được xác định bằng một tập hợp các tham số truy vấn, nhưng chỉ ở dạng một khối duy nhất. Các dải ô rời rạc phải được truy xuất riêng biệt bằng cách sử dụng các yêu cầu GET bổ sung.

Trang tính API phiên bản 4 có thể truy xuất bất kỳ tập dữ liệu ô nào từ một trang tính (bao gồm cả nhiều dải ô rời). Trang tính API v3 chỉ có thể trả về nội dung ô dưới dạng giá trị nhập (như người dùng nhập bằng bàn phím) và/hoặc kết quả của công thức (nếu là số); API Trang tính v4 cấp toàn quyền truy cập vào các giá trị, công thức, định dạng, siêu liên kết, xác thực dữ liệu và các thuộc tính khác.

API phiên bản 3

Để xác định URL của nguồn cấp dữ liệu dựa trên ô cho một trang tính nhất định, hãy kiểm tra nguồn cấp dữ liệu trang tính và tìm URL nguồn cấp dữ liệu ô trong mục bạn quan tâm trong trang tính.

Để truy xuất nguồn cấp dữ liệu dựa trên ô, hãy gửi yêu cầu GET đến URL nguồn cấp dữ liệu ô bằng cách sử dụng một tiêu đề uỷ quyền thích hợp. Ví dụ:

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

Các ô được tham chiếu bằng số hàng và số cột. Bạn có thể tìm nạp một phạm vi cụ thể bằng cách sử dụng các tham số truy vấn max-row, min-row, max-colmin-col. Ví dụ: lệnh sau đây truy xuất tất cả các ô trong cột 4 (D), bắt đầu bằng hàng 2:

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

API Trang tính phiên bản 3 trả về inputValue của các ô đã truy xuất – giá trị mà người dùng sẽ nhập vào giao diện người dùng Google Trang tính để thao tác với ô. inputValue có thể là một giá trị cố định hoặc một công thức. Đôi khi, API cũng trả về numericValue; ví dụ: khi một công thức trả về một số. Ví dụ: một phản hồi có thể bao gồm các mục tương tự như trên ô có cấu trúc như sau:

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

API phiên bản 4

Truy xuất dữ liệu ô bằng cách gọi phương thức spreadsheets.values.get hoặc spreadsheets.values.batchGet cho dải ô hoặc dải ô quan tâm tương ứng. Ví dụ: lệnh sau đây trả về các ô trong cột D của "Sheet2", bắt đầu bằng hàng 2, theo thứ tự chính của cột và trả về các công thức khi đã nhập (các ô trống trong dấu vết sẽ bị bỏ qua):

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

Phản hồi cho yêu cầu này có cấu trúc tương tự như:

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

Bạn nên sử dụng spreadsheet.values.batchGet nếu bạn định truy xuất nhiều dải dữ liệu ô. Nếu muốn truy cập vào các thuộc tính của ô, chẳng hạn như định dạng, thì bạn phải dùng phương thức spreadsheet.get.

Chỉnh sửa ô

API Trang tính v3 cho phép bạn chỉnh sửa nội dung ô bằng cách phát hành lệnh PUT cho nguồn cấp dữ liệu ô, trong đó mục nhập ô đã sửa đổi là nội dung yêu cầu.

Ngược lại, API Trang tính phiên bản 4 cung cấp các phương thức spreadsheets.values.updatespreadsheets.values.batchUpdate

API phiên bản 3

Để chỉnh sửa nội dung của một ô, trước tiên, hãy tìm mục nhập của ô trong nguồn cấp dữ liệu ô. Mục nhập có chứa một URL chỉnh sửa. Hãy cập nhật mục nhập để phản ánh nội dung mà bạn muốn ô có, sau đó tạo yêu cầu PUT cho url chỉnh sửa, trong đó mục nhập ô được cập nhật là phần nội dung của yêu cầu. Ví dụ: sau đây là cập nhật ô D2 (R2C4) để chứa công thức 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>

API phiên bản 4

Bạn có thể chỉnh sửa một ô trong API Trang tính phiên bản 4 bằng phương thức spreadsheets.values.update. Phương thức này yêu cầu một tham số truy vấn ValueInputOption chỉ định xem dữ liệu đầu vào được xử lý như đã nhập vào giao diện người dùng Trang tính (USER_ENTERED) hay không được phân tích cú pháp và được lấy nguyên trạng (RAW). Ví dụ: ô D2 sau đây sẽ cập nhật một công thức:

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

Nếu bạn đang thực hiện nhiều thao tác chỉnh sửa ô, hãy sử dụng phương thức spreadsheets.values.batchUpdate để thực hiện các thao tác đó trong một yêu cầu.

Chỉnh sửa nhiều ô qua yêu cầu hàng loạt

Cả hai API đều cung cấp phương tiện để thực hiện thay đổi đối với nội dung của nhiều ô bằng một yêu cầu (theo lô). Các ô mà yêu cầu hàng loạt tham chiếu đến không bắt buộc phải nằm trong phạm vi ngẫu nhiên.

Trong trường hợp một hoặc nhiều thao tác chỉnh sửa ô trong lô không thành công, thì API Trang tính v3 sẽ cho phép người khác thực hiện thành công. Tuy nhiên, API Trang tính phiên bản 4 sẽ trả về lỗi nếu có bất kỳ bản cập nhật theo lô nào không thành công và không áp dụng bất kỳ nội dung cập nhật nào trong trường hợp đó.

API phiên bản 3

Để chỉnh sửa nhiều ô, trước tiên hãy truy xuất nguồn cấp dữ liệu ô cho trang tính. Mục nhập chứa một URL lô. Gửi yêu cầu POST đến URL này, cùng với nội dung yêu cầu mô tả các ô bạn muốn cập nhật và nội dung ô mới. Yêu cầu POST và nội dung yêu cầu có cấu trúc tương tự như sau:

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>

Trường batch:id phải xác định duy nhất yêu cầu trong lô. Trường batch:operation phải là update để chỉnh sửa ô. gs:cell xác định ô theo số hàng và số cột, đồng thời cung cấp dữ liệu mới để chèn vào đó. id chứa URL đầy đủ đến ô cần cập nhật. link phải có thuộc tính href chứa đường dẫn đầy đủ đến mã nhận dạng của ô. Tất cả các trường này là bắt buộc cho mỗi mục nhập.

API phiên bản 4

API Trang tính phiên bản 4 cho phép chỉnh sửa hàng loạt các giá trị của ô thông qua phương thức spreadsheets.values.batchUpdate.

Bạn có thể chỉnh sửa nhiều ô bằng cách tạo yêu cầu POST kèm theo các thay đổi về dữ liệu được chỉ định trong nội dung yêu cầu. Ví dụ:

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

Nếu bạn đã chỉ định một ô duy nhất làm dải ô, thì tất cả các giá trị đã cung cấp sẽ được ghi vào trang tính bắt đầu bằng ô đó dưới dạng toạ độ phía trên bên trái. Thay vào đó, nếu bạn chỉ định một dải ô nhiều ô, thì các giá trị bạn cung cấp phải khớp chính xác với dải ô đó; nếu không, API sẽ trả về lỗi.