В этой статье мы пройдём по этой инструкции и проясним неочевидные моменты.
Вам понадобятся:
- Python 3;
- PyCharm;
- аккаунт Google;
- страница в Google Docs.
Создание проекта
Создайте проект в PyCharm с виртуальным окружением (это настройка включена по умолчанию).
Получение доступа к Google Docs API
Для начала необходимо получить доступ к API. Перейдите по этой ссылке и нажмите кнопку “ENABLE THE GOOGLE DOCS API”.
Скачайте файл с аутентификационными данными credentials.json
кнопкой “DOWNLOAD CLIENT CONFIGURATION”
и добавьте его в проект (перетащите в PyCharm или в папку проекта).
Установка необходимых модулей
Установите в PyCharm необходимые модули в виртуальное окружение Вашего проекта. Для этого перейдите в
настройки (в меню “File” -> “Settings” или через Cmd+,
). Откройте настройки интерпретатора проекта
“Project: ИМЯПРОЕКТА” -> “Project Interpreter”. Нажмите кнопку “+” справа сверху.
По очереди введите название каждого модуля в строку поиска и нажмите “Install Package”.
Вам понадобятся:
google-api-python-client
google-auth-httplib2
google-auth-oauthlib
То же самое можно сделать через кнопку “Terminal” внизу и одну команду:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
Написание кода
Создайте в проекте на том же уровне с файлом credentials.json
(это важно!) файл со следующим кодом:
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# Права нашего приложения.
SCOPES = ['https://www.googleapis.com/auth/documents.readonly']
# Сюда необходимо скопировать идентификатор вашей страницы. Например, для URL:
# https://docs.google.com/document/d/195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE/edit
# идентификатором будет 195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE
DOCUMENT_ID = '195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE'
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server()
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('docs', 'v1', credentials=creds)
document = service.documents().get(documentId=DOCUMENT_ID).execute()
print('The title of the document is: {}'.format(document.get('title')))
Запуск
При первом запуске программа потребует авторизацию хозяина аккаунта на просмотр документов.
Что дальше?
Изучаем инструкции, справочник и примеры.
Общий для всех API от Google инструмент - APIs Explorer, позволяет легко получать список доступных методов, и вызывать их прямо из браузера.
Например, получить текст документа с данными о всех стилях каждого отрывка можно вот так:
import json # Этот модуль используем, чтобы "отформатировать" результат.
print(json.dumps(document['body']['content'], indent=1))
Вывод:
[
{
"endIndex": 1,
"sectionBreak": {
"sectionStyle": {
"columnSeparatorStyle": "NONE",
"contentDirection": "LEFT_TO_RIGHT"
}
}
},
{
"startIndex": 1,
"endIndex": 25,
"paragraph": {
"elements": [
{
"startIndex": 1,
"endIndex": 25,
"textRun": {
"content": "Hello from Google Docs!\n",
"textStyle": {}
}
}
],
"paragraphStyle": {
"namedStyleType": "NORMAL_TEXT",
"direction": "LEFT_TO_RIGHT"
}
}
},
{
"startIndex": 25,
"endIndex": 26,
"paragraph": {
"elements": [
{
"startIndex": 25,
"endIndex": 26,
"textRun": {
"content": "\n",
"textStyle": {}
}
}
],
"paragraphStyle": {
"namedStyleType": "NORMAL_TEXT",
"direction": "LEFT_TO_RIGHT"
}
}
}
]