2016-07-07 22 views
8

Sto provando a leggere e scrivere valori di fogli diversi in python 3 seguendo lo google official documentation. Anche se sono in grado di leggere i valori di alcuni tipi di lamiere con proprietà gamma in rangeName = 'Class Data!A2:E' nel blocco di codice di cui qui di seguito:Ottieni l'elenco dei fogli e l'ultimo foglio in google spreadsheet 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', []) 

E io sto cercando di scrivere i valori utilizzando il 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() 

Il problema che sto affrontando è che non sono in grado di mantenere l'ultimo nome di foglio o id dalla documentazione ufficiale e come l'ultima revisione api sta facendo gid casuale (potremmo non sapere quale sarebbe il gid foglio sarebbe). C'è un modo per riferire l'elenco dei fogli o il foglio di lavoro più recente con il nome o l'id rivisto usando google sheet api v4?

risposta

19

È possibile ottenere un elenco di fogli utilizzando il metodo "get" su fogli di calcolo:

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

ciao! Puoi dirmi qualcosa di equivalente per ottenere i metadati del foglio in javascript? –

4

Nessuno ha chiesto questo su SO per la libreria PHP ancora, ma volevo solo aggiungere questa risposta qui in quanto questo è il primo risultato di Google per domande correlate.

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

?> 
Problemi correlati