Перш ніж перейти до практики, давай розберемося, що таке 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. Давай рухатися до наступної лекції і розширювати наш проєкт!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ