Базовое письмо

API Google Таблиц позволяет записывать значения и формулы в ячейки, диапазоны, наборы диапазонов и целые листы. Примеры на этой странице иллюстрируют, как некоторые распространенные операции записи могут быть выполнены с помощью ресурса spreadsheets.values ​​API Таблиц.

Обратите внимание, что значения ячеек также можно записывать с помощью метода spreadsheet.batchUpdate , который может быть полезен, если вы хотите одновременно обновить форматирование ячеек или другие свойства, на которые не влияет ресурс spreadsheets.values . Например, если вы хотите скопировать диапазон ячеек с одного листа на другой, перезаписывая при этом как формулу ячейки, так и форматирование ячейки, вы можете использовать метод UpdateCellsRequest с методом spreadsheet.batchUpdate .

Однако для простой записи значений проще использовать метод spreadsheets.values.update или метод spreadsheets.values.batchUpdate .

Эти примеры представлены в виде HTTP-запросов, которые не зависят от языка. Чтобы узнать, как реализовать запись на разных языках с помощью клиентских библиотек Google API, см. раздел Чтение и запись значений ячеек .

В этих примерах заполнитель SPREADSHEET_ID указывает, где вы должны указать идентификатор электронной таблицы , который можно найти по URL-адресу электронной таблицы. Диапазоны записи указываются с использованием нотации A1 . Пример диапазона: Лист1!A1:D5.

Напишите один диапазон

Начиная с новой пустой электронной таблицы, в следующем примере кода spreadsheets.values.update показано, как записать значения в диапазон. Параметр запроса ValueInputOption является обязательным и определяет, анализируются ли записанные значения (например, преобразуется ли строка в дату).

Тело запроса представляет собой объект ValueRange , описывающий записываемые значения диапазона. Поле majorDimension указывает, что массивы представляют собой списки значений, организованные по строкам. Существующие значения в целевом диапазоне перезаписываются.

Протокол запроса показан ниже.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!A1:D5",
  "majorDimension": "ROWS",
  "values": [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "3/20/2016"],
    ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
  ],
}

Ответ состоит из объекта UpdateValuesResponse , такого как этот:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!A1:D5",
  "updatedRows": 5,
  "updatedColumns": 4,
  "updatedCells": 20,
}

В результате лист выглядит следующим образом:

А Б С Д
1 Элемент Расходы Запасено Дата отправки
2 Колесо 20,50 долларов США 4 01.03.2016
3 Дверь 15 долларов США 2 15.03.2016
4 Двигатель 100 долларов 1 20.03.2016
5 Итоги 135,5 долларов США 7 20.03.2016

Выборочная запись в диапазон

При записи значений в диапазон можно избежать изменения некоторых существующих ячеек, установив для соответствующих элементов массива значение null . Также можно очистить ячейку, записав в нее пустую строку ( "" ).

Начав с листа, содержащего те же данные, что и в приведенном выше примере , в следующем примере кода spreadsheets.values.update показано, как записать значения в диапазон B1:D4, выборочно оставляя одни ячейки без изменений и очищая другие. Параметр запроса ValueInputOption является обязательным и определяет, анализируются ли записанные значения (например, преобразуется ли строка в дату).

Тело запроса представляет собой объект ValueRange , описывающий записываемые значения диапазона. Поле majorDimension указывает, что массивы представляют собой списки значений, организованные по столбцам.

Протокол запроса показан ниже.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!B1",
  "majorDimension": "COLUMNS",
  "values": [
    [null,"$1","$2", ""],
    [],
    [null,"4/1/2016", "4/15/2016", ""]
  ]
}

В поле values перечислены изменения, внесенные в каждый столбец диапазона. Первый массив указывает, что B1 следует оставить неизменным (из-за null элемента массива), а B4 следует очистить (пустая строка). Значения B2 и B3 обновлены. Третий массив выполняет те же операции со столбцом D, а второй пустой массив указывает, что столбец C следует оставить без изменений.

Ответ состоит из объекта UpdateValuesResponse такого как этот:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!B1:D5",
  "updatedRows": 3,
  "updatedColumns": 2,
  "updatedCells": 6,
}

В результате лист выглядит следующим образом:

А Б С Д
1 Элемент Расходы Запасено Дата отправки
2 Колесо 1,00 доллара США 4 01.04.2016
3 Дверь 2 доллара 2 15.04.2016
4 Двигатель 1
5 Итоги 3,00 доллара США 7 15.04.2016

Обратите внимание, что строка «Итоги», хотя и не изменяется напрямую этим запросом, меняется, поскольку ее ячейки содержат формулы, зависящие от измененных ячеек.

Запись в несколько диапазонов

Начиная с чистого листа, в следующем образце кода spreadsheets.values.batchUpdate показано, как записать значения в диапазоны Sheet1!A1:A4 и Sheet1!B1:D2. Существующие значения в целевом диапазоне перезаписываются. Тело запроса состоит из объекта ValueInputOption , который показывает, как интерпретировать входные данные, и массива объектов ValueRange соответствующих каждому записанному диапазону. Поле majorDimension определяет, интерпретируются ли включенные массивы как массивы столбцов или строк.

Протокол запроса показан ниже.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values:batchUpdate
{
  "valueInputOption": "VALUE_INPUT_OPTION",
  "data": [
    {
      "range": "Sheet1!A1:A4",
      "majorDimension": "COLUMNS",
      "values": [
        ["Item", "Wheel", "Door", "Engine"]
      ]
    },
    {
      "range": "Sheet1!B1:D2",
      "majorDimension": "ROWS",
      "values": [
        ["Cost", "Stocked", "Ship Date"],
        ["$20.50", "4", "3/1/2016"]
      ]
    }
  ]
}

Ответ состоит из объекта, в котором перечислены обновленные статистические данные ячеек, и массива объектов UpdateValuesResponse , по одному для каждого обновленного диапазона. Например:

{
  "spreadsheetId": SPREADSHEET_ID,
  "totalUpdatedRows": 4,
  "totalUpdatedColumns": 4,
  "totalUpdatedCells": 10,
  "totalUpdatedSheets": 1,
  "responses": [
    {
      "spreadsheetId": SPREADSHEET_ID,
      "updatedRange": "Sheet1!A1:A4",
      "updatedRows": 4,
      "updatedColumns": 1,
      "updatedCells": 4,
    },
    {
      "spreadsheetId": SPREADSHEET_ID,
      "updatedRange": "Sheet1!B1:D2",
      "updatedRows": 2,
      "updatedColumns": 3,
      "updatedCells": 6,
    }
  ],
}

В результате лист выглядит следующим образом:

А Б С Д
1 Элемент Расходы Запасено Дата отправки
2 Колесо 20,50 долларов США 4 01.03.2016
3 Дверь
4 Двигатель
5

Запись значений без синтаксического анализа

Начиная с чистого листа, в следующем примере кода spreadsheets.values.update показано, как записать значения в диапазон Sheet1!A1:E1, но используется параметр запроса RAW ValueInputOption чтобы предотвратить анализ записанных строк как формул, логических значений, или цифры. Они отображаются в виде строк, а выравнивание текста на листе выравнивается.

Тело запроса представляет собой объект ValueRange , описывающий записываемые значения диапазона. Поле majorDimension указывает, что массивы представляют собой списки значений, организованные по строкам. Существующие значения в целевом диапазоне перезаписываются.

Протокол запроса показан ниже.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1?valueInputOption=RAW
{
  "range": "Sheet1!A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Data", 123.45, true, "=MAX(D2:D4)", "10"]
  ],
}

Ответ состоит из объекта UpdateValuesResponse такого как этот:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!A1:E1",
  "updatedRows": 1,
  "updatedColumns": 5,
  "updatedCells": 5,
}

В результате лист выглядит следующим образом:

А Б С Д Э
1 Данные 123,45 истинный =МАКС(D2:D4) 10
2

Обратите внимание, что «ИСТИНА» выравнивается по центру и представляет собой логическое значение, тогда как «123,45» выравнивается по правому краю, поскольку это число, а «10» выравнивается по левому краю, поскольку это строка. Формула не анализируется и также отображается в виде строки.

Добавить значения

Начните с листа, подобного таблице ниже:

А Б С Д
1 Элемент Расходы Запасено Дата отправки
2 Колесо 20,50 долларов США 4 01.03.2016
3

В следующем примере кода spreadsheets.values.append показано, как добавить две новые строки значений, начиная со строки 3. Параметр запроса ValueInputOption является обязательным и определяет, анализируются ли записанные значения (например, преобразуется ли строка в дата).

Тело запроса представляет собой объект ValueRange , описывающий записываемые значения диапазона. Поле majorDimension указывает, что массивы представляют собой списки значений, организованные по строкам.

Протокол запроса показан ниже.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "3/20/2016"],
  ],
}

Ответ состоит из объекта AppendValuesResponse такого как этот:

{
  "spreadsheetId": SPREADSHEET_ID,
  "tableRange": "Sheet1!A1:D2",
  "updates": {
    "spreadsheetId": SPREADSHEET_ID,
    "updatedRange": "Sheet1!A3:D4",
    "updatedRows": 2,
    "updatedColumns": 4,
    "updatedCells": 8,
  }
}

В результате лист выглядит следующим образом:

А Б С Д
1 Элемент Расходы Запасено Дата отправки
2 Колесо 20,50 долларов США 4 01.03.2016
3 Дверь 15 долларов США 2 15.03.2016
4 Двигатель 100 долларов 1 20.03.2016
5