2016-12-15 5 views
3

нужна ваша помощь большое время, я пытался понять это и попробовал urllib2 и другие, чтобы попытаться захватить HttpError, заданный при загрузке несуществующего листа.Обработка SheetsAPI ошибок - Python 2.7

Так вот исходный код вызова

discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4') 
service = discovery.build('sheets', 'v4', http=http, discoveryServiceUrl=discoveryUrl) 
result = service.spreadsheets().values().get(spreadsheetId=spreadsheetId, range=rangeName).execute() 
values = result.get('values', []) 

if not values: 
    print('No data found.') 
    tkMessageBox.showwarning("ERROR", "There is nothing on this page!") 
    LoadCSV() 
else: 

Хорошо так теперь. Когда я называю лист, который не существует, я хочу, чтобы обработать ошибку и показать предупреждение о том, «Нет больше листов, чтобы попробовать»

Здесь ошибка:

HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/(ID)/values/130%21A2%3AI?alt=json returned "Unable to parse range: 130!A2:I"> 

Как я могу справиться с этой ошибкой вместо этого дать предупреждение о том, что страница не существует и завершить работу программы.

ответ

1

Я использую sheets-api-quickstart. Это работает для меня:

import googleapiclient 

discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4') 
service = discovery.build('sheets', 'v4', http=http, discoveryServiceUrl=discoveryUrl) 
try: 
    # The `execute()` call triggers the exception. 
    result = service.spreadsheets().values().get(spreadsheetId=spreadsheetId, range=rangeName).execute() 
    # deceptively named, custom HttpError 
except googleapiclient.errors.HttpError: 
    print "page does not exist" 
else: 
    values = result.get('values', []) 

    if not values: 
     print('No data found.') 
     tkMessageBox.showwarning("ERROR", "There is nothing on this page!") 
     LoadCSV() 
    else: 
+0

Hey Elliot, спасибо за быстрый ответ, я реализовал это, и он отлично работает. Я взглянул на быстрый старт, а также на ссылки, которые он дает. Я видел Try/Except, я также попробовал HttpError, просто не знал код ошибки api. Я пытался обработать код ошибки 400, но не повезло. Большое значение. – Joel