2016-07-07 48 views
8

我试图在google official documentation之后读取和写入python 3中不同工作表的值。虽然我能够读取使用范围财产从某些表值rangeName = 'Class Data!A2:E'代码块中提到如下:在Python电子表格api v4中获取最新的工作表和最新工作表

discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?' 
        'version=v4') 
    service = discovery.build('sheets', 'v4', http=http, 
           discoveryServiceUrl=discoveryUrl) 

    spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' 
    rangeName = 'Class Data!A2:E' 
    result = service.spreadsheets().values().get(
     spreadsheetId=spreadsheetId, range=rangeName).execute() 
    values = result.get('values', []) 

,我试图写使用sample code from here值:

requests.append({ 
    'updateCells': { 
     'start': {'sheetId': 0, 'rowIndex': 0, 'columnIndex': 0}, 
     'rows': [ 
      { 
       'values': [ 
        { 
         'userEnteredValue': {'numberValue': 1}, 
         'userEnteredFormat': {'backgroundColor': {'red': 1}} 
        }, { 
         'userEnteredValue': {'numberValue': 2}, 
         'userEnteredFormat': {'backgroundColor': {'blue': 1}} 
        }, { 
         'userEnteredValue': {'numberValue': 3}, 
         'userEnteredFormat': {'backgroundColor': {'green': 1}} 
        } 
       ] 
      } 
     ], 
     'fields': 'userEnteredValue,userEnteredFormat.backgroundColor' 
    } 
}) 
batchUpdateRequest = {'requests': requests} 

service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, 
            body=batchUpdateRequest).execute() 

这个问题我我面对的是,我无法保留官方文档中的最新工作表名称或ID,并且最新的api修订版正在制作随机gid(我们可能不知道工作表gid会是什么)。有没有什么办法引用表单或电子表格最新修订表名称或id使用谷歌表api v4列表?

回答

19

您可以通过使用电子表格的“get”方法得到张的列表:

sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute() 
sheets = sheet_metadata.get('sheets', '') 
title = sheets[0].get("properties", {}).get("title", "Sheet1") 
sheet_id = sheets[0].get("properties", {}).get("sheetId", 0) 
+0

嗨! 你能告诉我一些相当于在javascript中获取表单元数据的东西吗? –

4

没有人问起这个上所以对于PHP库,但我只是想在这里补充这个答案因为这是谷歌有关相关问题的第一个结果。

<?php 

$sheets = array(); 

// ... load library and set up client ... 
$service = new Google_Service_Sheets($client); 

$response = $service->spreadsheets->get($spreadsheetId); 
foreach($response->getSheets() as $s) { 
    $sheets[] = $s['properties']['title']; 
} 

return $sheets; 

?> 
相关问题