2016-07-07 8 views
8

Ich versuche, Werte von verschiedenen Blättern in Python 3 nach der google official documentation zu lesen und zu schreiben.Get Liste der Blätter und neuesten Blatt in Google Tabellenkalkulation api v4 in Python

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', []) 

Und ich versuche Werte zu schreiben, mit dem sample code from here: Obwohl ich in der Lage bin Werte von bestimmten Blättern in rangeName = 'Class Data!A2:E' im Codeblock unten genannte Verwendung Bereich Eigenschaft lesen

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() 

Das Problem, das ich Ich bin nicht in der Lage, neueste Blatt Name oder ID aus der offiziellen Dokumentation zu halten und als letzte API-Revision macht zufällige gid (wir können nicht wissen, was wäre das Blatt gid wäre). Gibt es eine Möglichkeit, die Liste der zuletzt bearbeiteten Blattnamen oder IDs mit dem Google Sheet API v4 zu referenzieren?

Antwort

19

Sie eine Liste von Blättern erhalten die „get“ -Methode auf Tabellen unter Verwendung von:

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

hi! Können Sie mir etwas Ähnliches mitteilen, um die Metadaten in JavaScript zu erhalten? –

4

Niemand dazu auf SO für die PHP-Bibliothek noch gefragt, aber ich wollte nur hier, um diese Antwort hinzufügen Dies ist das erste Google-Ergebnis für ähnliche Fragen.

<?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; 

?>