#python #google-api #google-sheets-api #google-api-python-client #service-accounts
Вопрос:
Я пытаюсь открыть личный лист Google с помощью python. Конечная цель здесь-прочитать эти данные частного листа в объект json. Я позаботился о том, чтобы создать облачный проект Google, включить API и учетную запись службы. Электронная почта учетной записи службы была опубликована и добавлена в качестве редактора. Я также создал ключи OAuth для настольного приложения. Это необходимо, так как файл является закрытым.
Я знаю, что мне нужно каким-то образом запросить токен для использования для доступа к API листов, но я не знаю, как создать запрос и использовать client_secret
файл, созданный с помощью ключей OAuth. Я подумал, что в GoogleAPI будет функция, с помощью которой вы можете передать этот файл напрямую, но я потерялся в документации.
Любое понимание будет оценено по достоинству!
Ответ №1:
Все, что вам нужно сделать, это указать в библиотеке местоположение файла clientSecret.json, который вы должны были загрузить с облачной консоли Google. Этот метод должен создать сервис для вас, и вы можете отправлять запросы в api. Он будет обрабатывать всю авторизацию.
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
def get_service(api_name, api_version, scopes, key_file_location):
"""Get a service that communicates to a Google API.
Args:
api_name: The name of the api to connect to.
api_version: The api version to connect to.
scopes: A list auth scopes to authorize for the application.
key_file_location: The path to a valid service account JSON key file.
Returns:
A service that is connected to the specified API.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
key_file_location, scopes=scopes)
# Build the service object.
service = build(api_name, api_version, credentials=credentials)
return service
Лучший пример, который я знаю для аутентификации учетной записи службы с помощью python, — это быстрый запуск Google analytics.Если у вас возникнут какие-либо проблемы с его изменением для Google листов, дайте мне знать, я могу попытаться помочь.
Называть это должно быть что-то вроде этого.
def main():
# Define the auth scopes to request.
scope = 'https://www.googleapis.com/auth/spreadsheets'
key_file_location = '<REPLACE_WITH_JSON_FILE>'
# Authenticate and construct service.
service = get_service(
api_name='sheets',
api_version='v4',
scopes=[scope],
key_file_location=key_file_location)
data = your_method_to_call_sheets(service)
Как создать clientSecret.json не забудьте включить API google листов в разделе библиотека
Комментарии:
1. Потрясающе, работает! для тех, кто еще борется, я использовал этот код, чтобы затем получить данные листа: лист = сервис.электронные таблицы() результат = лист.значения().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, диапазон=SAMPLE_RANGE_NAME).execute() значения = результат.get(‘значения’, [])