Google Spreadsheet API возвращает ошибки сетки пределов - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь обновить Google Sheet, используя Ruby API (который является просто оболочкой для API SheetsV4)

Я сталкиваюсь со следующей ошибкой

Google:: Apis :: ClientError: badRequest: Диапазон ('MySheet'! AA1) превышает пределы сетки.Максимальное количество строк: 1000, максимальное количество столбцов: 26

Я нашел ссылки на эту проблему на форуме Google , однако, похоже, что не существует решения этой проблемы, кромеиспользовать другой метод для записи в электронную таблицу.

Дело в том, что мне нужно скопировать существующий шаблон электронной таблицы и ввести свои необработанные данные в различные листы.До сих пор я использовал этот код (где service является клиентом API Ruby SheetsV4)

def write_table(values, sheet: 'Sheet1', column: 1, row: 1, range: nil, value_input_option: 'RAW')
  google_range = begin
    if range
      "#{sheet}!#{range}"
    elsif column && row
      "#{sheet}!#{integer_to_A1_notation(column)}#{row}"
    end
  end
  value_range_object = ::Google::Apis::SheetsV4::ValueRange.new(
    range: google_range, values: values
  )
  service.update_spreadsheet_value(spreadsheet_id,
    google_range,
    value_range_object,
    value_input_option: value_input_option
  )
end

До сих пор он работал довольно хорошо, но после добавления дополнительных данных в мои выдержки я пошелнад 26-м столбцом (столбцы AA и далее), и теперь я получаю сообщение об ошибке.

Есть ли какой-либо параметр, чтобы перейти к update_spreadsheet_value, чтобы мы могли повысить этот предел?

В противном случае, какой другой способ записи в электронную таблицу с помощью добавления?

РЕДАКТИРОВАТЬ - четкое описание моего сценария

У меня есть шаблон электронной таблицы Google с 8 листов (вкладок), 4 из которыхозаглавлены RAW-XX, и именно здесь я пытаюсь обновить свои данные.

В начале эти необработанные вкладки имеют заголовки только на 30 столбцов (A1 -> AD1). Мой код должен быть в состоянии заполнитьвсе ячейки A2 -> AD42

  • (1) в первый раз
  • (2), и мой код должен быть в состоянии повторно выполнить снова, чтобы заменить эти значения насвежие, без добавления

Так что в основном я думал об использовании update_spreadsheet_value, а не append_xx из-за требования (2).Но из-за этой ошибки / ограничения (неясно) в API это не работает.Также важно отметить: я на самом деле не обновляю все эти 30 столбцов за один раз, а на самом деле в нескольких вызовах метода update (до 10 столбцов каждый раз)

Я думал, что -Может быть, мне не хватает варианта отправки в API Google, чтобы разрешить более 26 столбцов за один раз?- Может быть, это на самом деле недокументированное жесткое ограничение API update - Может быть, я могу прибегнуть к удалению существующих данных +, используя append

EDIT 2

Предположим, у меня есть шаблон в версии 1 снесколько листов (обратите внимание, что я использую =xx, чтобы указать формулу, и [empty], чтобы указать, что в ячейке ничего нет, и 1, чтобы указать необработанное значение «1», было предоставлено

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
[empty]            | [empty]            |

Sheet2 - FORMATTED
Number of foos       | Number of Bars
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'B2

Теперь я называю свое приложение «впервые», оно копирует существующий шаблон в новый файл «generate_spreadsheet» и вставляет данные в лист RAW. Оказывается, в данный момент мое приложение говорит, что 1 foo и 0bar

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
1                  | 0                  |

Sheet2 - FORMATTED
Number of foos       | Number of Bars
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2

Может быть, если я позвоню своему приложению позже, может быть, шаблон И данные поменяются между ними, поэтому я хочу ЗАМЕНИТЬ все в моем «созданном листе»

Новый шаблон имеетстановиться между

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
[empty]            | [empty]            |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2

Предположим, теперь мое приложение говорит, что все еще 1 foo и количество баров изменилось с 0 до 2, я хочу обновить «созданную таблицу», чтобы она выгляделакак

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
1                  | 3                  |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2

1 Ответ

0 голосов
/ 05 декабря 2018

Как насчет использования values.append?В моей среде я также испытывал ту же ситуацию с вами.Чтобы избежать этой проблемы, я использовал values.append.

Пожалуйста, измените его следующим образом и попробуйте снова.

С:

service.update_spreadsheet_value(

Кому:

service.append_spreadsheet_value(

Ссылка:

Если это не тот результат, который вам нужен, я 'мне жаль.

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