2016-07-07 5 views
8

Я пытаюсь читать и записывать значения разных листов в python 3 после google official documentation. Хотя я могу читать значения из определенных листов с использованием диапазона недвижимости в rangeName = 'Class Data!A2:E' в блоке кода приведены ниже:Получить список листов и последний лист в google spreadsheet api v4 в 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', []) 

И я пытаюсь писать значения, используя 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() 

Проблема I сталкиваюсь с тем, что я не могу сохранить последнее имя листа или идентификатор из официальной документации, и поскольку последняя ревизия api делает случайный gid (мы, возможно, не знаем, какой будет лист gid). Есть ли способ связать список листов или таблиц с последними пересмотренными названиями листов или идентификаторами, используя страницу google api v4?

ответ

19

Вы можете получить список листов с помощью метода «получить» на таблицы:

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

никто не спрашивал об этом на SO для библиотеки PHP, но я просто хотел бы добавить этот ответ здесь так как это первый результат Google для связанных вопросов.

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

?>