使用Google API v4添加包含数据的Google表格

时间:2016-11-13 07:15:51

标签: python google-sheets google-spreadsheet-api

我正在使用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']

3 个答案:

答案 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)