Кому будет интересна эта статья?
Вы работаете в 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 :

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

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

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