Прежде чем перейти к практике, давайте разберем, что такое Google Sheets API и почему он так важен.
Google Sheets API позволяет программистам взаимодействовать с Google Таблицами (да-да, теми самыми, с ячейками и колонками) прямо из кода. Его можно использовать для:
- Чтения данных из таблиц.
- Записи данных в таблицы.
- Модификации структуры таблиц, например, добавления новых листов.
- Автоматизации любых задач, связанных с таблицами.
Примеры использования:
- Отчеты в формате таблиц, автоматически обновляемые каждую неделю.
- Запись данных о пользователях или статистике прямо из вашего приложения.
- Парсинг данных из таблиц для дальнейшей аналитики.
В общем, Google Sheets API — это ваш цифровой помощник для работы с таблицами без ручного труда.
Настройка доступа к Google Sheets API
Перед тем как начать, давайте подготовим нашу среду разработки.
- Зайдите в Google Cloud Console.
- Выберите ваш проект или создайте новый.
- Перейдите в раздел APIs & Services → Library.
- Найдите Google Sheets API, включите его кнопкой "Enable".
- Перейдите в раздел Credentials и создайте OAuth 2.0 Client ID или используйте сервисный аккаунт (если хотите автоматизировать работу).
Для работы с Google Sheets в Python нам нужна библиотека google-api-python-client. Установим её:
pip install google-api-python-client google-auth google-auth-oauthlib google-auth-httplib2
Если вы используете requirements.txt, ваша зависимость будет выглядеть так:
google-api-python-client
google-auth
google-auth-oauthlib
google-auth-httplib2
Авторизация через OAuth2
Работа с Google Sheets API требует авторизации. Напишем небольшую программу для авторизации:
Код авторизации:
from google.oauth2 import service_account
from googleapiclient.discovery import build
# Путь к JSON-файлу сервисного аккаунта
SERVICE_ACCOUNT_FILE = 'path/to/your-service-account.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
# Получаем учетные данные
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
# Создаем объект службы для работы с таблицами
service = build('sheets', 'v4', credentials=credentials)
- SERVICE_ACCOUNT_FILE: JSON-файл, который вы скачали при настройке сервисного аккаунта.
- SCOPES: Указываем объем доступа к API. В данном случае это полный доступ к таблицам.
- build: Создаем подключение к Google Sheets API версии
v4.
Теперь вы авторизованы и готовы к взаимодействию с таблицами. Ура!
Чтение данных из Google Sheets
Шаг 1: Подготовка таблицы
Создайте новую таблицу в Google Sheets (например, "Test Sheet") и возьмите её ID из URL. Пример:
https://docs.google.com/spreadsheets/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/view
Здесь ID таблицы — это 1AbCdEfGhIjKlMnOpQrStUvWxYz.
Шаг 2: Чтение данных
Напишем функцию, чтобы получить данные из таблицы:
SPREADSHEET_ID = '1AbCdEfGhIjKlMnOpQrStUvWxYz'
RANGE = 'Sheet1!A1:C10' # Читаем данные с A1 по C10 на первом листе
# Чтение данных
def read_data_from_sheet(sheet_id, range_name):
result = service.spreadsheets().values().get(
spreadsheetId=sheet_id, range=range_name
).execute()
return result.get('values', [])
# Пример работы функции
data = read_data_from_sheet(SPREADSHEET_ID, RANGE)
print(data)
Если в вашей таблице есть данные, результат будет выглядеть примерно так:
[['Имя', 'Фамилия', 'Возраст'],
['Иван', 'Иванов', '25'],
['Мария', 'Петрова', '30']]
Теперь вы можете использовать данные из Google Sheets прямо в Python для анализа, отчётов или автоматизации!
Запись данных в Google Sheets
Чтение данных — это классно, но как насчет записи? Давайте добавим данные в таблицу!
Шаг 1: Подготовка данных
Создайте новую функцию, которая запишет данные в таблицу:
def write_data_to_sheet(sheet_id, range_name, values):
body = {
'values': values
}
result = service.spreadsheets().values().update(
spreadsheetId=sheet_id,
range=range_name,
valueInputOption='RAW',
body=body
).execute()
print(f"{result.get('updatedCells')} ячеек обновлено.")
# Пример записи данных
new_data = [
['Имя', 'Фамилия', 'Возраст'],
['Андрей', 'Сидоров', '20'],
['Ольга', 'Кузнецова', '35']
]
write_data_to_sheet(SPREADSHEET_ID, 'Sheet1!A1:C3', new_data)
Параметры:
- range_name: указывает, куда именно пишем данные.
- valueInputOption: может быть
RAW(обычные значения) илиUSER_ENTERED(формулы, форматирование).
Благодаря этой функции таблица автоматически обновится новыми данными.
Полезные приёмы: обновление и добавление данных
Часто нужно не просто записать данные, а добавить их в конец таблицы. Для этого используем метод append:
def append_data_to_sheet(sheet_id, range_name, values):
body = {
'values': values
}
result = service.spreadsheets().values().append(
spreadsheetId=sheet_id,
range=range_name,
valueInputOption='RAW',
insertDataOption='INSERT_ROWS',
body=body
).execute()
print(f"{result.get('updates').get('updatedCells')} ячеек добавлено.")
# Пример добавления данных
additional_data = [['Екатерина', 'Моисеева', '29']]
append_data_to_sheet(SPREADSHEET_ID, 'Sheet1!A1', additional_data)
Типичные ошибки и способы их избежать
- Ошибка 403: Permission Denied. Проверьте, дали ли вы нужные права сервисному аккаунту (например, дали ли доступ к редактированию таблицы).
- Ошибка 404: Not Found. Убедитесь, что вы взяли правильный ID таблицы.
- Превышение лимита запросов. Google ограничивает количество запросов, так что старайтесь оптимизировать код (например, обрабатывать данные партиями).
Практическое применение
Применяя Google Sheets API вместе с FastAPI, вы можете создавать мощные системы. Например:
- Делать автоматические отчеты по заявкам клиентов.
- Интегрировать ваш бекенд с таблицами для обновления данных в реальном времени.
- Позволять пользователям выгружать данные из вашего приложения прямо в Google Таблицы.
Эти знания пригодятся не только для личных проектов, но и на собеседованиях, где вас могут спросить о практическом использовании API.
Теперь у нас есть прочная основа для работы с Google Sheets API. Давайте двигаться к следующей лекции и расширять наш проект!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ