google-api-ruby-客户端:批量更新电子表格值
google-api-ruby-client: batchupdate spreadsheet values
按照 here 的说明执行批量更新。
首先,我构建了所需的 ValueRange 对象,如下所示:
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
data.range = range
接下来使用上面 1 中的信息来构建请求,如下所示:
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = data
request.value_input_option = value_input_option
最后,我提出要求:
sheet_service.batch_update_values(spreadsheet.id, request)
我希望这会更新 sheet 但我却收到了这个错误:
NoMethodError Exception: undefined method `each_with_index' for #<Google::Apis::SheetsV4::ValueRange:0x00007ffc7826c2e0>
ValueRange 似乎是:
- 没有回复
each_with_index
- 或提供的
ValueRange
对象(数据)缺少可枚举对象
通常会检查我正在使用的 gem,但在这种情况下,响应不提供行或文件来缩小错误范围。
我很难过。我错过了什么?
完整代码:
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = data
request.value_input_option = value_input_option
data.range = range
sheet_service.batch_update_values(spreadsheet.id, request)
修改点:
- SheetsAPI中spreadsheets.values.batchUpdate的方法中,
data
的属性的值要求是数组
value_input_option
未声明。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
value_input_option = "USER_ENTERED" # Please set this for your actual situation.
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = [data] # <--- Modified
request.value_input_option = value_input_option
data.range = range
sheet_service.batch_update_values(spreadsheet.id, request)
- 在此修改中,假设
sheet_service
和spreadsheet.id
的值为有效值。请注意这一点。
参考:
按照 here 的说明执行批量更新。
首先,我构建了所需的 ValueRange 对象,如下所示:
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
data.range = range
接下来使用上面 1 中的信息来构建请求,如下所示:
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = data
request.value_input_option = value_input_option
最后,我提出要求:
sheet_service.batch_update_values(spreadsheet.id, request)
我希望这会更新 sheet 但我却收到了这个错误:
NoMethodError Exception: undefined method `each_with_index' for #<Google::Apis::SheetsV4::ValueRange:0x00007ffc7826c2e0>
ValueRange 似乎是:
- 没有回复
each_with_index
- 或提供的
ValueRange
对象(数据)缺少可枚举对象
通常会检查我正在使用的 gem,但在这种情况下,响应不提供行或文件来缩小错误范围。
我很难过。我错过了什么?
完整代码:
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = data
request.value_input_option = value_input_option
data.range = range
sheet_service.batch_update_values(spreadsheet.id, request)
修改点:
- SheetsAPI中spreadsheets.values.batchUpdate的方法中,
data
的属性的值要求是数组 value_input_option
未声明。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
value_input_option = "USER_ENTERED" # Please set this for your actual situation.
values = [
["first", "title", "second", "url", "long"]
]
range = "WorksheetInParentSpreadsheet!A1:M"
data = Google::Apis::SheetsV4::ValueRange.new
data.values = values
data.major_dimension = 'ROWS'
spreadsheet = `spreadsheet_object`
request = Google::Apis::SheetsV4::BatchUpdateValuesRequest.new
request.data = [data] # <--- Modified
request.value_input_option = value_input_option
data.range = range
sheet_service.batch_update_values(spreadsheet.id, request)
- 在此修改中,假设
sheet_service
和spreadsheet.id
的值为有效值。请注意这一点。