Кому будет интересна эта статья?

  • Вы работаете в Pandas/Python и вам необходимо получить таблицу из гугл дока.

  • Вы работаете в Pandas/Python и вам необходимо записать таблицу в гугл док.

  • Но коннекшена нету, тогда эта статья для вас!

И так сделать это на самом деле очень быстро, погнали!

Для работы мы будем использовать gspread_pandas, и по сути остается только настроить коннекшены, остальная часть работы сделана за нас. В нем куча методов которые покрывают большую часть задач.

import pandas as pd
from gspread_pandas import Spread
from gspread_pandas.conf import get_config, get_creds

secret = get_config(
    conf_dir='<Путь к файлу с кредами>',
    file_name='<Файл с кредами>'
)

creds = get_creds(config=secret)

И это все:D

Далее чтобы прочитать таблицу, нужно вызвать метод Spread передав ему ссылку на гугл док:

spreadsheet_link = 'https://docs.google.com/spreadsheets/d/1YULwugFvBatbIsDjLwMXbyeQobo2vf8LbM68dLu5R9w/edit?gid=0#gid=0'
spread = Spread(
    spreadsheet_link,
    creds=creds
)
df = spread.sheet_to_df()
df

А чтобы записать DataFrame в гугл док вызвать метод spread.df_to_sheet, передав ему DF:

# Create test df
dict_test = {'col1': [1, 2], 'col2': [3, 4]}
df_test = pd.DataFrame(data=dict_test)
df_test

Но сам дьявол тут как раз таки в настройке конфига:D
Нагуглить методы не сложно, по поему опыту именно настройка конфига вызывает больше всего вопросов.

И так авторизовываемся под свом гугл аккаунтом (или сервисной учеткой) и переходим по ссылке.

Там находим Create credentials -> Servise account.
Тут мы создаем сервисный аккаунт.
Далее заполняем все нужные поля и кликаем Done.
В результате мы получили сервисный акк.
Далее кликаем и проваливаемся в него (стрелка на скрине ниже):

Попадаем на эту страницу:
И выбираем Keys -> Create new key.

Выбираем JSON -> create.


После прожатия create у вас автоматически скачаеться json файл с кредами.
Далее можете копировать путь в нему и вставить в код в самом начале:

secret = get_config(
    conf_dir='<Путь к файлу с кредами>',
    file_name='<Файл с кредами>'
)

Осталось нажать 2 кнопки, снова переходим по ссылке.
Там переходим в Enabled API & servises:

И находим Google Sheets API:
Через поиск находим Google Sheets API:

И кликаем кнопку Enable:

Далее переходим по ссылке и кликаем Enable the API :

Осталось последнее, дать сервисной учетке которая будет читать/писать данные доступ в конктентый гугл док.

По той же ссылке узнаем имя сервисной учетки:

И даем ей доступ в самом гуг доке:

Должны получить успех при попытке на чтения и записи!

Комментарии (1)


  1. vhavr
    19.01.2025 09:44

    Специально завел акаунт, что бы прокоментировать: статья, правильна и рабочая, но если вы аналитик, или просто хотите выходить за рамки таблиц и начинать что-то с чем-то интегрировать - то на бигквери с гуглтаблицах лучше не якорится. Мелкие проблемы будут лезть со всех сторон. Если вам нужно что-то что бы подсоединить его как бд и дальше манипулировать - берите любой ноукод бд инстурмент - teable, nocodb и тд. Когда прийдется вы подключитесь к ней как к бд и будете работать без прослойки.