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. Давай рухатися до наступної лекції і розширювати наш проєкт!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ