2016-11-13 103 views
5

我正在使用Python。我需要使用Google API v4在電子表格中添加工作表。我可以使用帶有電子表格ID和addSheet請求的batchUpdate創建工作表(它返回shetId並創建空白工作表)。但是我怎樣才能在其中添加數據呢?使用Google API v4添加Google表單數據

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'] 

回答

1

想通了,裏面的電子表格創建表後,您可以訪問範圍「nameofsheet!A1」,即

service.spreadsheets().values().update(spreadsheetId=s_id, range='New sheet!A1', body=data_i, valueInputOption='RAW').execute() 

此請求將發佈數據到新創建的數據表名稱爲「新表」

2

您可以添加此代碼以在Google表格中寫入數據。在文檔中 - Reading & Writing Cell Values

電子表格可以有多個工作表,每個工作表具有任意數量的行或列。單元格是位於特定行和列的交叉點處的位置,可以包含數據值。 Google Sheets 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,則它必須與URL中的範圍相匹配。在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對象列表(每個對象一個tten範圍)。每個ValueRange對象指定其自己的range,majorDimension以及要輸入的數據。

希望這會有所幫助。

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) 
相關問題