Я реализовал здесь код python на основе документации, чтобы получить доступ к электронной таблице, доступной по общедоступной ссылке. Работает один раз в час. Если я исполняю несколько секунд после того, как успех, я получаю сообщение об ошибке:Доступ к электронной таблице Google из Google Appengine с учетной записью службы: работа один раз в час
Error opening spreadsheet no element found: line 1, column 0
Предположение: Маркер доступа имеет срок действия 1 час. Таким образом, appengine перейдет к обновлению токена через час, сбросив все.
Вопрос: Этот код запрашивает новый токен для каждого запроса. И что же мне делать ? Сохранить токен? Когда я пытаюсь token_to_blob, чтобы сохранить токен, я получаю сообщение об ошибке: Scope undefined
Заранее благодарим за вашу помощь!
try :
credentials = AppAssertionCredentials(scope=('https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds','https://docs.google.com/feeds'))
logging.info("credentials")
http_auth = credentials.authorize(httplib2.Http())
authclient = build('oauth2','v2',http=http_auth)
auth2token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
except Exception as details:
logging.error("Error Google credentials %s"%details)
return "Error"
try :
gd_client = gdata.spreadsheets.client.SpreadsheetsClient()
gd_client = auth2token.authorize(gd_client)
feed = gd_client.GetListFeed(<spreadsheetKey>,1)
except Exception as details:
logging.error("Error opening spreadsheet %s"%details)
return "Error"
Посмотрите на gspread, благодаря которому очень легко получить доступ к электронной таблице, используя учетную запись sevice. – voscausa
Можете ли вы сначала определить, откуда исходит ошибка «элемент не найден»? Попробуйте взглянуть на [это] (http://stackoverflow.com/questions/30920529/python-problems-accessing-a-google-spreadsheet-using-an-oauth-2-0-service-clie) и посмотреть, помогает ли он – SwagBomb
Спасибо - элемент не найден из пустого ответа из-за неправильных параметров аутентификации, даже если электронная таблица является общедоступной – Benoit