Привет! Как оказалось, та еще задачка просто получить данные из своей таблицы в Google Sheets используя Python. Пошаговая инструкция следует.

1. Google Cloud учетная запись

Первое, что нам нужно — это создать учетную запись в Google Cloud Console

Регион РФ и Беларусь естественно недоступен. Выбираем видимо любой)

Создаем новый проект

После создания проекта необходимо выбрать его в нашем личном кабинете и перейти во вкладку API and Services

В этой вкладке нам необходимо разрешить юзеру работать с Google Sheets API

Можно использовать ссылку или найти в списке

Разрешив API нас предупредят, что нам нужно создать данные для авторизации т.е. Credentials

2. Создание данных для авторизации (Credentials)

Переходим во кладку Credentials

Создаем данные вверху
Create Credentials — > Service Account

Далее нам необходимо заполнить 3 поля

  1. Наше имя аккаунта
  2. Права этого аккаунта
  3. Список пользователей, которым можно пользоваться нашим сервисным аккаунтом

Заполянем название аккаунта из которого потом сформируется а-ля почтовый адрес

По правам

Я себе выдаю Owner — владелец, вы можете эксперементировать

Дополнительных пользователей я не добавляю, вы можете эксперементировать

3. Генерация ключей авторизации

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

В поле Actions нажимаем на *** и выбираем Manage Keys

Создать новый ключ

Выбираем JSON

Вот и все, файл с ключами у вас в Загрузках

4. Google Sheets ID и разрешения для аккаунта

Google не был бы Google, если бы этого было бы достаточно для работы

Нужно открыть наш файл JSON и найти поле «client_email»: после которого мы видим весьма несуразный почтовый адрес. Он нам нужен. Очень.

Копируем адрес и идем в Google Sheets

В нужной нам таблице нам необходимо разрешить нашему пользователю с несуразной почтой доступ к этой таблице

Второй момент:

Обращаем внимание на имя листа. Имя листа внизу нам понадобится у меня оно Sheet1

И третий момент ID нашей таблицы. Оно у нас в адресной строке

Вот тут между /d и /edit

Его тоже нужно сохранить отдельно.

На этом подготовка закончилась

5. Python код для работы с Google Sheets

Для работы нам нужны следующие библиотеки

pip install gspread oauth2client google-auth

Код достаточно простой
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import dotenv
import os

# Загрузка переменных окружения из .env файла
dotenv.load_dotenv()

# Получение значений переменных из .env файла
credentials_file = os.getenv('CREDENTIALS_FILE')
spreadsheet_id = os.getenv('SPREADSHEET_ID')
sheet_name = os.getenv('SHEET_NAME')
data_range = os.getenv('DATA_RANGE')

# Объект авторизации
scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name(credentials_file, scope)
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheet_id)
sheet = spreadsheet.worksheet(sheet_name)
data = sheet.get(data_range)
for row in data:
    print(row)

и файл .env

CREDENTIALS_FILE — путь к нашему файлу JSON
SPREADSHEET_ID — идентификатор нашей таблицы из адресной строки
SHEET_NAME — Имя листа
DATA_RANGE — Диапазон читаемых ячеек

Вот и работает все.

Надеюсь было все понятно и доступно

Код доступен на Github
Все вопросы задавать в нашем чате

Подпишитесь на рассылку

Если это было вам полезно — вы можете сказать нам спасибо!