Если у вас уже есть приложения, основанные на Google Sheets API версии 3, вы можете перейти на Google Sheets API версии 4. Версия 4 основана на JSON, имеет более удобный интерфейс и добавляет значительный объем функциональности, недоступной в версии 3.
На этой странице представлено сопоставление команд старого API Sheets версии 3 с эквивалентными операциями в API Sheets версии 4. Сопоставление в основном сосредоточено на коллекции spreadsheets.values , которая обеспечивает прямую функциональность чтения и записи ячеек. Другие аспекты, такие как добавление листов или обновление свойств листов, обрабатываются коллекцией spreadsheets . Обратите внимание, что структуры JSON в API версии 4 не обратно совместимы со структурами XML, используемыми в версии 3.
Для получения дополнительной информации о ресурсах, доступных в API Sheets v4, см. Справочник по API .
Обозначения и термины
В API версии 3 листы внутри конкретной электронной таблицы называются «рабочими листами». Это синонимично термину «листы», используемому в API версии 4.
API часто требуют указания идентификатора электронной таблицы , с которой вы работаете. Также часто требуется идентификатор листа, с которым вы работаете. Эти значения отображаются либо как часть URL-адреса конечной точки API, либо как параметры запроса, либо как часть тела запроса. На этой странице заполнители spreadsheetId и sheetId обозначают идентификаторы электронной таблицы и листа соответственно. При использовании методов, описанных на этой странице, подставьте фактические идентификаторы в эти места.
API версии 3 также присваивает идентификаторы строкам, полученным с помощью списка результатов поиска ; на этой странице это представлено заполнителем rowId .
Авторизация запросов
При запуске ваше приложение запрашивает у пользователей предоставление определенных разрешений; области действия, указанные в вашем приложении, определяют, какие разрешения оно запрашивает.
API версии 3
API Google Sheets версии 3 работает с единой областью авторизации:
https://spreadsheets.google.com/feeds
который является псевдонимом для
https://www.googleapis.com/auth/spreadsheets
Можно использовать любой из форматов области видимости.
API версии 4
API Google Sheets версии 4 использует один или несколько из следующих наборов областей видимости:
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 термин «видимость» использовался для обозначения доступности той или иной электронной таблицы.
API версии 3
API Google Sheets версии 3 напрямую указывает на видимость в своих конечных точках. public электронная таблица «опубликована в Интернете» и, следовательно, может быть доступна через API без авторизации, в то время как для доступа к private электронной таблице требуется аутентификация. Видимость указывается в конечной точке после идентификатора электронной таблицы:
https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full
API версии 4
В новой версии Sheets API v4 явное указание видимости отсутствует. Вызовы API выполняются с использованием идентификаторов электронных таблиц. Если у приложения нет разрешения на доступ к указанной электронной таблице, возвращается ошибка. В противном случае вызов продолжается.
Проекция
В API Google Sheets версии 3 термин «проекция» используется для обозначения набора данных, возвращаемых конкретным вызовом API — либо всех данных, либо фиксированного подмножества, определенного в API. API Google Sheets версии 4 не использует проекцию; вместо этого он предоставляет вам больший контроль над тем, какие данные возвращаются.
API версии 3
В Sheets API v3 возможны только два варианта проекции: full проекция возвращает всю доступную информацию, а basic — меньшее, фиксированное подмножество данных (для рабочих листов, списка и ячеек). Как и в случае с видимостью, проекцию необходимо указать в конечной точке API (после параметра видимости):
https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/public/basic
Меньший набор данных, предоставляемый basic проекцией, ценен для повышения эффективности кода, но не может быть настроен.
API версии 4
Хотя Sheets API v4 может возвращать полный набор данных, он не определяет фиксированные подмножества, аналогичные basic настройке видимости в Sheets API v3. Методы в коллекции электронных таблиц ограничивают объем возвращаемых данных с помощью параметра запроса fields .
Например, следующий запрос возвращает только заголовки всех листов в конкретной электронной таблице:
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?fields=sheets.properties.title
Создайте электронную таблицу
API версии 3
API Google Sheets версии 3 не предоставляет средств для создания новых электронных таблиц; вместо этого для создания новых файлов электронных таблиц можно использовать метод Files.create API Google Drive . Для этого приложению необходимо объявить область действия https://www.googleapis.com/auth/drive .
API версии 4
Метод Files.create API Google Drive также можно использовать с API Google Sheets версии 4, но для этого приложению необходимо указать область действия https://www.googleapis.com/auth/drive .
В качестве альтернативного варианта API Google Sheets версии 4 предоставляет метод spreadsheets.create , который также позволяет добавлять листы, устанавливать свойства электронной таблицы и листа, а также добавлять именованные диапазоны. Например, следующий код создает новую электронную таблицу и присваивает ей имя "NewTitle":
POST https://sheets.googleapis.com/v4/spreadsheets
{
"properties": {"title": "NewTitle"}
}Таблицы со списками для авторизованного пользователя
API версии 3
Канал Sheets API v3 позволяет приложению получать список всех электронных таблиц, доступных авторизованному пользователю. Конечная точка канала электронных таблиц:
GET https://spreadsheets.google.com/feeds/spreadsheets/private/full
API версии 4
API Google Sheets версии 4 не предоставляет эту конкретную операцию. Мы рекомендуем перевести ваше приложение на использование области видимости drive.file в сочетании с Google Picker для выбора элементов в электронных таблицах.
В тех случаях, когда требуется отображение списка электронных таблиц, это можно сделать с помощью метода Files.list в API Google Диска , используя запрос mimeType :
GET https://www.googleapis.com/drive/v3/files
?q=mimeType='application/vnd.google-apps.spreadsheet'Для отображения списка всех электронных таблиц пользователя с помощью метода files.list из API Google Drive требуется ограниченная область видимости.
Получить метаданные листа
API Sheets версии 3 предоставляет канал для доступа к метаданным листа, содержащимся в заданной электронной таблице (доступ к данным строк и ячеек осуществляется через отдельный канал). Метаданные включают такую информацию, как заголовки листов и сведения о размерах.
Метод spreadsheets.get в Sheets API v4 предоставляет доступ к этой информации и многому другому.
API версии 3
Доступ к ленте рабочих таблиц осуществляется через эту конечную точку 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"
> g<d:>etag='W/"D0cERnk-eip7ImA9WBBXGEg."'
idhttps://spreadshe<ets>.go<ogle.co>m/feeds/worksheets/sprea<dsheetId>/pr<ivate/full/id
u>pdated2006-11-<17T18:>23:<45.173Z/updated
title type="text"Groceries R Us/title
link rel="alternate" type=&>quo<t;text/html"
href="https://spreadsheets.google.com/ccc?key=spreadsheetId"/
link rel="http://schemas.google.com/g/2005#feed"
type=&quo>t;a<pplication/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>=&q<uot;ht>tp://<sche>mas.google.com/g/<2005#>post&<quot;> type="appl<icatio>n/a<tom+xml>&qu<ot;
href="ht>t<ps://spreadsheets.google>.co<m/feeds/worksheets/sp>r<eadsheetId/private/ful>l&q<uot;/
author
name>F<itzwilliam Darcy/name
> e<mailfitz@example.com/email>
/a<ut>hor
openSearch:totalResults1/openSearch:totalResults
openSearch:startIndex1/ope<nSe>arch:<startIn>dex
openSearch:itemsPe<rPage1/o>penSe<arch:itemsPerPage>
ent<ry gd:>etag=<'"YDwqeyI.>"<'
> idh<ttps://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/id
updated2006-11-17T18:23:45.173Z/updated
title type="text"Sheet1/title
content type=&q>uot;t<ext"Sheet1/content
link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml"
href="https://spreadsheets.google.>com/f<eeds/list/spreadsheetId/sheetId/private/full"/
link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type>=&quo<t;application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/
link rel=&quo>t;sel<f" typ>e=&<quot;applica>tion/<atom+xml&qu>ot<;
hr>ef=<">h<ttps:>//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:rowCount100/gs:rowCount
gs:colCount20/gs:colCount
/entry
/feed
API версии 4
Метод spreadsheets.get позволяет получать свойства листа и другие метаданные — гораздо больше, чем доступно в Sheets API версии 3. Если вам нужно только прочитать свойства листа, установите параметр запроса 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 позволяют добавлять новые листы в существующую электронную таблицу.
API версии 3
API Google Sheets версии 3 позволяет добавлять новые листы в электронную таблицу, отправляя следующий (аутентифицированный) 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/spr>ead<sheet>s/2006&q<uot;
> ti<tleExpenses>/t<itle
gs:ro>wCo<unt50/gs:ro>wC<ount
gs:co>l<Count1>0/gs:colCount
/entry
API версии 4
Добавить новые листы можно, отправив запрос AddSheet в методе spreadsheets.batchUpdate . В теле запроса можно указать свойства нового листа; все свойства являются необязательными. Указание заголовка, используемого для существующего листа, приведет к ошибке.
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
"requests": [{
"addSheet": {
"properties": {
"title": "Expenses",
"sheetType": "GRID",
"gridProperties": {
"rowCount": 50,
"columnCount": 10
}
}
}
}],
}Изменить заголовок и размер листа
API Sheets версии 3 позволяет обновлять заголовки и размер листов; API Sheets версии 4 также позволяет это делать, но может использоваться и для обновления других свойств листа. Обратите внимание, что уменьшение размера листа может привести к удалению данных в обрезанных ячейках без предупреждения.
API версии 3
Чтобы изменить заголовок или размер листа, сначала получите ленту листов и найдите нужную запись, содержащую URL-адрес edit . Обновите метаданные листа и отправьте их в качестве тела PUT запроса на URL-адрес редактирования. Например:
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/2>006<#worksheet"/>
title< type=>&qu<ot;text"Expens>es/title<
conte>nt <type="text"Expenses/content
link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml" href="https://spread>she<ets.google.com/feeds/list/spreadsheetId/sheetId/private/full"/
link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type="application/atom+xml&qu>ot;< href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/
link rel="self" type="ap>pli<cation/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId"/
link rel="ed>it&<quot; type=>&q<uot;applicat>ion</atom+xml&q>uo<t;
href=>&<quot;h>ttps://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version"/
gs:rowCount45/gs:rowCount
gs:colCount15/gs:colCount
/entry
API версии 4
Для обновления размера, заголовка и других свойств листа выполните запрос updateSheetProperties в методе spreadsheets.batchUpdate . Тело 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 позволяет удалять листы из заданной электронной таблицы.
API версии 3
Чтобы удалить лист, сначала получите ленту листов , а затем отправьте запрос DELETE по URL-адресу edit целевой записи листа.
DELETE https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version
API версии 4
Для удаления листа выполните запрос DeleteSheet в методе spreadsheets.batchUpdate . Тело POST запроса должно содержать только sheetId удаляемого листа. Например:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
"requests": [
{
"deleteSheet": {
"sheetId": sheetId
}
}
],
}Чтобы получить sheetId листа (sheetId) отдельного листа, используйте метод spreadsheets.get в таблице.
Извлечение данных строки
Доступ к данным в ячейках электронной таблицы через список строк — один из двух методов, предоставляемых API Sheets версии 3 (другой — доступ через ячейки ). Доступ через строки предназначен для поддержки распространенных операций с электронными таблицами (построчное чтение, добавление строк, сортировка), но делает определенные предположения, которые делают его непригодным для некоторых задач. В частности, доступ через список строк предполагает, что пустые строки являются завершением потока данных, и что в первой строке листа присутствуют обязательные заголовки.
В отличие от этого, API Sheets версии 4 не использует методы доступа, привязанные к строкам. Вместо этого доступ к данным ячеек листа осуществляется путем ссылки на необходимые диапазоны с использованием обозначения A1 . Диапазоны могут представлять собой блоки ячеек, целые строки, целые столбцы или целые листы. API также может получать доступ к непересекающимся наборам ячеек.
API версии 3
Чтобы определить URL-адрес ленты новостей в виде списка для заданного листа, получите ленту новостей этого листа и найдите URL-адрес ленты новостей в интересующей вас записи листа.
Для получения ленты новостей в виде списка отправьте GET запрос на URL-адрес ленты новостей, используя соответствующий заголовок авторизации. Например:
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
Ответ на этот запрос содержит, помимо прочего, записи, соответствующие конкретным строкам. На отдельные ячейки ссылаются имена, указанные в (обязательной) строке заголовка листа. Например, вот запись из одной строки:
<entry gd:etag='"S0wCTlpIIip7I>mA0<X0>QI&qu<ot;><9;
id>rowId/id
updated2006-1<1-17T18:>23:<45.173Z/updated
category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.go>ogl<e.com/spreadsheet>s/2006#<list&q>uot<;/
title type=&qu>ot;text"Bingley/title
con<tent typ>e=&<quot;text"Hours: 10, Items: 2, IPM: 0.0033/content
link rel="self" type="application/atom+xml"
href="ht>tps<://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/
link rel="edit" type="application/atom+xml&quo>t;
< hr>ef=&quo<t;https:/>/sp<readsheet>s.<google.com>/fe<eds/list/>s<preadsheet>Id/<sheetId>/priva<te/full/>r<owId/v>ersion"/
gsx:nameBingley/gsx:name
gsx:hours10/gsx:hours
gsx:items2/gsx:items
gsx:ipm0.0033/gsx:ipm
/entry
По умолчанию строки, отображаемые в списке, возвращаются в порядке следования строк. API Google Sheets версии 3 предоставляет параметры запроса для изменения этого порядка.
Обратный порядок:
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:lastnameAPI Google Sheets версии 3 также позволяет фильтровать определенные строки с помощью структурированного запроса (на который ссылаются заголовки столбцов):
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
?sq=age>25%20and%20height<175API версии 4
В версии 4 API таблиц можно получать строки по диапазону, используя методы spreadsheets.values.get или spreadsheets.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 версии 4 отсутствуют аналоги параметров запроса для сортировки по строкам, предоставляемых Sheets API версии 3. Сортировка в обратном порядке тривиальна; достаточно обработать возвращаемый массив values в обратном порядке. Сортировка по столбцам не поддерживается для чтения, но можно отсортировать данные в запросе к таблице (используя SortRange ), а затем прочитать их.
В настоящее время в Sheets API версии 4 нет прямого аналога структурированным запросам Sheets API версии 3. Однако вы можете получить необходимые данные и отсортировать их по мере необходимости в своем приложении.
Добавить новую строку данных
Добавить новую строку данных в таблицу можно с помощью любого из API.
API версии 3
Чтобы определить URL-адрес ленты новостей в виде списка для заданного листа, получите ленту новостей листа и найдите URL-адрес публикации в интересующей вас записи листа.
Для добавления строки данных отправьте POST запрос на указанный URL-адрес, используя соответствующий заголовок авторизации. Например:
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>/20<06/extend>e<d"
>gsx<:hours2>/gs<x:hours
> g<sx:ipm0.5>/g<sx:ipm
g>sx:<items60/>gsx:items<
gsx:na>m<eEliza>beth/gsx:name
/entry
Новые строки добавляются в конец указанного листа.
API версии 4
В 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 также позволяет добавлять ячейки с определенными свойствами и форматированием с помощью запросов AppendCells в методе spreadsheets.batchUpdate .
Отредактируйте строку, добавив новые данные.
Оба API позволяют обновлять данные строк новыми значениями.
API версии 3
Чтобы отредактировать строку данных, просмотрите список записей , чтобы найти нужную запись. При необходимости обновите содержимое этой записи. Убедитесь, что значение ID в используемой записи точно совпадает со значением ID существующей записи.
После обновления записи отправьте PUT запрос с указанной в теле запроса записью на URL-адрес edit , указанный в этой строке, используя соответствующий заголовок авторизации. Например:
PUT https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version
<entry gd:etag='"S0wCTlpIIip7I>mA0<X0>QI&qu<ot;><9;
id>rowId/id
updated2006-1<1-17T18:>23:<45.173Z/updated
category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.go>ogl<e.com/spreadsheet>s/2006#<list&q>uot<;/
title type=&qu>ot;text"Bingley/title
con<tent typ>e=&<quot;text"Hours: 10, Items: 2, IPM: 0.0033/content
link rel="self" type="application/atom+xml"
href="ht>tps<://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/
link rel="edit" type="application/atom+xml&q>uot<;
hr>ef=&quo<t;https:/>/sp<readsheet>s.<google.com>/fe<eds/list/>s<preadsheet>Id/<sheetId>/priva<te/full/>r<owId/v>ersion"/
gsx:nameBingley/gsx:name
gsx:hours20/gsx:hours
gsx:items4/gsx:items
gsx:ipm0.0033/gsx:ipm
/entry
API версии 4
В Sheets API версии 4 вы можете редактировать строку, используя обозначение ячейки 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 также позволяет редактировать свойства ячеек и форматирование ячеек с помощью запросов UpdateCells или RepeatCell в методе spreadsheets.batchUpdate .
Удалить строку
Оба API поддерживают удаление строк. Удалённая строка удаляется из электронной таблицы, а строки ниже неё сдвигаются на одну позицию вверх.
API версии 3
Чтобы удалить строку, сначала получите строку для удаления из списка , а затем отправьте запрос DELETE на URL-адрес edit , указанный в записи строки. Это тот же URL-адрес, который использовался для обновления строки.
DELETE https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version
Чтобы гарантировать, что вы не удалите строку, измененную другим клиентом после ее получения, добавьте HTTP-заголовок If-Match, содержащий значение ETag исходной строки. Вы можете определить значение ETag исходной строки, изучив атрибут gd:etag элемента записи.
Если вы хотите удалить строку независимо от того, обновлял ли её кто-то другой после получения, используйте условие If-Match: * и не включайте ETag. (В этом случае вам не нужно получать строку перед удалением.)
API версии 4
Удаление строк с помощью Sheets API v4 осуществляется вызовом метода spreadsheet.batchUpdate с использованием запроса DeleteDimension . Этот запрос также можно использовать для удаления столбцов, и разработчики могут выбрать удаление только части строки или столбца. Например, следующий код удаляет 6-ю строку листа с заданным ID (индексы строк начинаются с нуля, начиная с startIndex и заканчивая endIndex):
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
"requests": [
{
"deleteDimension": {
"range": {
"sheetId": sheetId,
"dimension": "ROWS",
"startIndex": 5,
"endIndex": 6
}
}
}
],
}sheetId листа (sheetId) можно получить с помощью метода spreadsheet.get .
Получить данные ячейки
API Sheets версии 3 предоставляет канал данных по ячейкам для базового доступа ко всем данным, хранящимся в электронной таблице. Для доступа на чтение канал данных по ячейкам может предоставлять либо всё содержимое листа, либо диапазон ячеек листа, определяемый набором параметров запроса, но только в виде единого блока — непересекающиеся диапазоны необходимо получать отдельно с помощью дополнительных GET запросов.
API Sheets версии 4 позволяет получать любой набор данных ячеек из листа (включая несколько непересекающихся диапазонов). API Sheets версии 3 может возвращать содержимое ячеек только в виде входных значений (введенных пользователем с клавиатуры) и/или результатов формул (если они числовые); API Sheets версии 4 предоставляет полный доступ к значениям, формулам, форматированию, гиперссылкам, проверке данных и другим свойствам.
API версии 3
Чтобы определить URL-адрес ленты новостей, привязанной к ячейке, для заданного листа, изучите ленту новостей листа и найдите URL-адрес ленты новостей в интересующей вас записи листа.
Для получения ленты новостей из ячейки отправьте GET запрос на URL-адрес ленты, используя соответствующий заголовок авторизации. Например:
GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full
Ссылки на ячейки осуществляются с помощью номера строки и столбца. Получение определенного диапазона можно выполнить с помощью параметров запроса max-row , min-row , max-col и min-col . Например, следующий код извлекает все ячейки в столбце 4 (D), начиная со строки 2:
GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full
?min-row=2&min-col=4&max-col=4API Google Sheets версии 3 возвращает inputValue полученных ячеек — значение, которое пользователь обычно вводит в интерфейс Google Sheets для управления ячейкой. inputValue может быть литеральным значением или формулой. API также иногда возвращает numericValue ; например, когда формула выдает число. Например, ответ может содержать записи ячеек, похожие по структуре на следующие:
<entry gd:etag='"ImB5C>BYS<RC>p7"'
idhttps://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId</pr>iva<te/full>/R9C4/id
updated2006-1<1-17T18:>27:<32.543Z/updated
category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.go>ogl<e.com/spreadsheet>s/<2006#c>ell<"/
title typ>e<="t>ext<"D4/title
content type="text"5/content
link rel="self" type="application/atom+xml"
href="ht>tps<://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4"/
link rel="edit" type="application/atom+xml>&qu<ot;
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId>/<private/>f<ull/R9>C4/srevc"/
gs:cell row="4" col="4" inputValue="=FLOOR(C4/(B4*60),.0001)"
numericValue="5.0"5/gs:cell
/entry
API версии 4
Получение данных из ячеек осуществляется путем вызова метода spreadsheets.values.get или spreadsheets.values.batchGet для интересующего диапазона или диапазонов соответственно. Например, следующий код возвращает ячейки в столбце D листа "Sheet2", начиная со строки 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 .
Редактировать ячейку
API Google Sheets версии 3 позволяет редактировать содержимое ячеек, отправляя команду PUT в канал ячеек, указав в качестве тела запроса измененную запись в ячейке.
В отличие от этого, Sheets API v4 предоставляет методы spreadsheets.values.update и spreadsheets.values.batchUpdate для изменения содержимого ячеек.
API версии 3
Чтобы отредактировать содержимое отдельной ячейки, сначала найдите запись этой ячейки в ленте ячеек . Запись содержит URL-адрес для редактирования. Обновите запись, указав желаемое содержимое ячейки, а затем отправьте PUT запрос на URL-адрес редактирования, указав обновленную запись ячейки в качестве тела запроса. Например, следующий код обновляет ячейку 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>
API версии 4
Редактирование отдельных ячеек в Sheets API v4 можно выполнить с помощью метода spreadsheets.values.update . Этот метод требует параметра запроса ValueInputOption , который указывает, обрабатываются ли входные данные так, как если бы они были введены в пользовательский интерфейс Sheets ( 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 предоставляют средства для внесения изменений в содержимое нескольких ячеек с помощью одного (пакетного) запроса. Ячейки, на которые ссылается пакетный запрос, не обязательно должны находиться в смежном диапазоне.
В случае, если одно или несколько изменений ячеек в пакете завершаются неудачей, Sheets API v3 позволяет успешно выполнить остальные. Однако Sheets API v4 возвращает ошибку, если какое-либо из обновлений в пакете завершается неудачей, и в этом случае ни одно из них не применяется.
API версии 3
Для редактирования нескольких ячеек сначала получите список ячеек для листа. Запись содержит URL-адрес для пакетной обработки. Отправьте POST запрос на этот URL-адрес, указав в теле запроса ячейки, которые вы хотите обновить, и их новое содержимое. 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.goog>le.<co>m/spreadsheets/2006"
idhttps://spreadsheets.google.com/feeds/cells/spre<ads>hee<tId/s>heetI<d/privat>e/full/i<d
entry>
<batch:idrequest1/batch:id
>batch<:o>peration type="update"/
idhttps://spreadsheets.google.com/feeds/cells</sp>reads<heetId/sheetId/private/full/R2C4/id
link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.>com/f<eeds/cells/spreadsheetId/sheetId/private/full>/R2<C4/ver>sion"<;/
> gs:<cell row>="2<" co>l=&qu<ot;4" inputValue="ne>wData<&q>uot;/
/entry
...
entry
batch:idrequest2/batch:id
batch:operation type<=&q>uot;u<pdate"/
idhttps://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5/id
link rel="edit" type="ap>plica<tion/atom+xml"
href="https://s>pre<adshee>t<s.goo>gle.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5/version"/
gs:cell row="5" col="2" inputValue="moreInfo"/
/entry
/feed
Поле batch:id должно однозначно идентифицировать запрос в пакете. Поле batch:operation должно update при редактировании ячеек. gs:cell идентифицирует ячейку по номеру строки и столбца и предоставляет новые данные для вставки. Поле id содержит полный URL-адрес ячейки, которую необходимо обновить. link должно иметь атрибут href , содержащий полный путь к идентификатору ячейки. Все эти поля обязательны для каждой записи.
API версии 4
API Google Sheets версии 4 позволяет выполнять пакетное редактирование значений ячеек с помощью метода 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 вернет ошибку.