Я пытаюсь обновить 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