我正在使用Python。我需要使用Google API v4在电子表格中添加工作表。我可以使用带有电子表格ID和addSheet请求的batchUpdate创建工作表(它返回shetId并创建空工作表)。但是我如何在其中添加数据呢?
data = {'requests': [
{
'addSheet':{
'properties':{'title': 'New sheet'}
}
}
]}
res = service.spreadsheets().batchUpdate(spreadsheetId=s_id, body=data).execute()
SHEET_ID = res['replies'][0]['addSheet']['properties']['sheetId']
答案 0 :(得分:2)
您可以添加此代码以在Google表格中写入数据。在文档中 - Reading & Writing Cell Values
电子表格可以有多个工作表,每个工作表都有任意数量的行或列。单元格是特定行和列的交叉点处的位置,并且可以包含数据值。 Google表格API提供了spreadsheets.values集合,可以简单地读取和写入值。
写入单一范围
要将数据写入单个范围,请使用spreadsheets.values.update请求:
values = [
[
# Cell values ...
],
# Additional rows ...
]
body = {
'values': values
}
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheet_id, range=range_name,
valueInputOption=value_input_option, body=body).execute()
更新请求的正文必须是ValueRange对象,但唯一必填字段为
values
。如果指定了range
,则它必须与网址中的范围匹配。在ValueRange中,您可以选择指定其majorDimension。默认情况下,使用ROWS。如果指定了COLUMNS,则每个内部数组都写入一列而不是一行。
编写多个范围
如果要编写多个不连续范围,可以使用spreadsheets.values.batchUpdate请求:
values = [
[
# Cell values
],
# Additional rows
]
data = [
{
'range': range_name,
'values': values
},
# Additional ranges to update ...
]
body = {
'valueInputOption': value_input_option,
'data': data
}
result = service.spreadsheets().values().batchUpdate(
spreadsheetId=spreadsheet_id, body=body).execute()
batchUpdate请求的主体必须是BatchUpdateValuesRequest对象,其中包含ValueInputOption和ValueRange个对象列表(每个写入范围一个)。每个ValueRange对象都指定自己的
range
,majorDimension
以及要输入的数据。
希望这有帮助。
答案 1 :(得分:1)
想出在电子表格中创建工作表之后,您可以访问范围' nameofsheet!A1'即。
service.spreadsheets().values().update(spreadsheetId=s_id, range='New sheet!A1', body=data_i, valueInputOption='RAW').execute()
此请求会将数据发布到名为'新工作表
的新创建工作表中答案 2 :(得分:1)
您还可以尝试更直观的'我为google sheet api v4,pygsheets写的库,因为我发现默认的客户端位很麻烦。
import pygsheets
gc = pygsheets.authorize()
# Open spreadsheet
sh = gc.open('my new ssheet')
# create a worksheet
sh.add_worksheet("new sheet",rows=50,cols=60)
# update data with 2d vector
sh.update_cells('A1:B10', values)
# or skip let it infer range from size of values
sh.update_cells('A1', values)