JavaRush /Курсы /Модуль 4: FastAPI /Использование Google Sheets API: чтение и запись данных

Использование Google Sheets API: чтение и запись данных

Модуль 4: FastAPI
17 уровень , 3 лекция
Открыта

Прежде чем перейти к практике, давайте разберем, что такое Google Sheets API и почему он так важен.

Google Sheets API позволяет программистам взаимодействовать с Google Таблицами (да-да, теми самыми, с ячейками и колонками) прямо из кода. Его можно использовать для:

  • Чтения данных из таблиц.
  • Записи данных в таблицы.
  • Модификации структуры таблиц, например, добавления новых листов.
  • Автоматизации любых задач, связанных с таблицами.

Примеры использования:

  • Отчеты в формате таблиц, автоматически обновляемые каждую неделю.
  • Запись данных о пользователях или статистике прямо из вашего приложения.
  • Парсинг данных из таблиц для дальнейшей аналитики.

В общем, Google Sheets API — это ваш цифровой помощник для работы с таблицами без ручного труда.


Настройка доступа к Google Sheets API

Перед тем как начать, давайте подготовим нашу среду разработки.

  1. Зайдите в Google Cloud Console.
  2. Выберите ваш проект или создайте новый.
  3. Перейдите в раздел APIs & ServicesLibrary.
  4. Найдите Google Sheets API, включите его кнопкой "Enable".
  5. Перейдите в раздел 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)
  1. SERVICE_ACCOUNT_FILE: JSON-файл, который вы скачали при настройке сервисного аккаунта.
  2. SCOPES: Указываем объем доступа к API. В данном случае это полный доступ к таблицам.
  3. 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. Давайте двигаться к следующей лекции и расширять наш проект!

1
Задача
Модуль 4: FastAPI, 17 уровень, 3 лекция
Недоступна
Чтение данных из Google Sheets
Чтение данных из Google Sheets
1
Задача
Модуль 4: FastAPI, 17 уровень, 3 лекция
Недоступна
Запись данных в Google Sheets
Запись данных в Google Sheets
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ