Ruby - Google Sheets API | InsertDimension - PullRequest
1 голос
/ 09 марта 2020

Использование gem 'google-api-client' V4 для работы с Google Sheets. Я пытаюсь вставить несколько строк в индекс, и вот что у меня есть -

spreadsheet = sheet(sheet_id: Utilities.global_config[:googlesheets][:sheetid], sheet_name: 'Sheetname')

insert_dimension_range = Google::Apis::SheetsV4::DimensionRange.new
insert_dimension_range.sheet_id = spreadsheet.properties.sheet_id
insert_dimension_range.dimension = 'ROWS'
insert_dimension_range.start_index = 1
insert_dimension_range.end_index = 3

insert_dimension = Google::Apis::SheetsV4::InsertDimensionRequest.new(inherit_from_before: false)
insert_dimension.range = insert_dimension_range

insert_dimension_request = Google::Apis::SheetsV4::Request.new
insert_dimension_request.insert_dimension = insert_dimension

batch_update_spreadsheet_request = Google::Apis::SheetsV4::BatchUpdateSpreadsheetRequest.new
batch_update_spreadsheet_request.requests = [insert_dimension: insert_dimension_request]

response = service.batch_update_spreadsheet(Utilities.global_config[:googlesheets][:sheetid], batch_update_spreadsheet_request)


Не уверен, что не так с приведенным выше кодом. Я получаю сообщение об ошибке - Google::Apis::ClientError: badRequest: Must specify at least one request.

Так выглядит представление объекта в памяти, прежде чем API отправит запрос на серверы Google - enter image description here

Я вижу, что в массиве @request_object.requests есть правильный insert_dimension, но не понимаю сообщение об ошибке.

Кто-нибудь знает, что мне нужно исправить? Большое спасибо заранее ?‍♂️

1 Ответ

1 голос
/ 09 марта 2020

Разобрался! В своем вопросе я указал start_index = 1, что означает, что я запрашиваю API для начала вставки с row #1, но в моем листе первые две строки были объединены. Очевидно, что это не удастся.

Изменено start_index = 3, и теперь оно работает! Wi sh сообщение об ошибке было немного более четким.

...