Google Sheets V4 spreadsheets.batchUpdate: недопустимые запросы appendDimension: нет сетки с идентификатором: 0 - PullRequest
0 голосов
/ 02 апреля 2020

Почему мы получили эту ошибку с пустой фиктивной электронной таблицей с одним пустым листом, пытающимся добавить строку к первому листу?

Чтобы воссоздать, попробуйте следующее:

  1. Создать пустая электронная таблица, она будет содержать один лист по умолчанию
  2. Добавить еще один пустой лист с именем "Лист 2" в предыдущую электронную таблицу
  3. удалить электронную таблицу по умолчанию, первую

Теперь мы хотим добавить строку к «Листу 2»

К сожалению, электронная таблица закрыта для gsuite и недоступна для публикации c, но вы можете выполнить предыдущие шаги для воспроизведения

https://docs.google.com/spreadsheets/d/1feeE6Glv_TEE3lAi4Pd3BWblLo7jwPgSMyjATHY5SM8/edit?usp=sharing

Этот лист был создан до выпуска Листов V4, если я создаю новый лист, копирующий все ячейки из старой, он работает, но у нас есть много старых таблиц в порт и это будет трудоемкая работа

API тест

https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate?apix_params=%7B%22spreadsheetId%22%3A%221feeE6Glv_TEE3lAi4Pd3BWblLo7jwPgSMyjATHY5SM8%22%2C%22resource%22%3A%7B%22requests%22%3A%5B%7B%22appendDimension%22%3A%7B%22length%22%3A1%2C%22sheetId%22%3A0%2C%22dimension%22%3A%22ROWS%22%7D%7D%5D%7D%7D

Запрос

ЭТОТ ТЕЛО Был построен с использованием редактора кода Google на developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate то же самое Код был протестирован с использованием Java API с теми же параметрами, мы хотим добавить строку на первый лист

{
  "requests": [
    {
      "appendDimension": {
        "length": 1,
        "sheetId": 0,
        "dimension": "ROWS"
      }
    }
  ]
}

Ответ

{
  "error": {
    "code": 400,
    "message": "Invalid requests[0].appendDimension: No grid with id: 0",
    "status": "INVALID_ARGUMENT"
  }
}

Если вы следуете начальному шаги до шага 2, ответ будет 200 OK, поэтому мы считаем, что мы не ссылаемся на первый лист, используя нулевой идентификатор листа со значением 0

1 Ответ

0 голосов
/ 07 апреля 2020

Ошибка исходит из sheetId

Помните, что идентификаторы листа не являются инкрементными. Первый лист всегда будет иметь Id 0, а второй НЕ будет иметь Id 1. И если вы удалите первый лист, его идентификатор НЕ будет передан на второй лист.

Чтобы узнать идентификатор вашего листа, вы можете либо

  • использовать метод spreadsheets.get с указанием fields sheets - это вернет вам информацию о листах, включая sheetId
  • , или извлечет Id из URL таблицы.

Если URL-адрес похож на

https://docs.google.com/spreadsheets/d/XXXXXXXXXXXX/edit#gid=110036182

, то sheetId равен 110036182

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...