В прошлой публикации я показывал как сделать токен для Google API и упомянул свою библиотеку как пример, где такой токен нужен. Вот прямая ссылка.
SpeedTab это обертка на API от гугла, который позволяет работать и редактировать гугл таблицы. Библиотека также включает минимальный функционал для работы с гугл диском.
В этой публикации я покажу как использовать библиотеку SpeedTab на нескольких примерах.
import speedtab as st with st.Client('token2.json') as user: table1 = user.create_spreadsheet(title='My test Spreadsheet', sheets=['One', 'Two'], hide_grid_lines=False)
Для начала создадим пустую таблицу.
import speedtab as st with st.Client('token2.json') as user: # table1 = user.create_spreadsheet(title='My test Spreadsheet', sheets=['One', 'Two'], hide_grid_lines=False) table1 = user.get_spreadsheet('{spreadsheet_id}') table1.sheet('One').clear().cell_range((2, 1, 21, 2)).set_borders() (table1.sheet('One').cell_range('B3').write_range([[1, 2, 3], ['Text1', 'Text2', 'Text3']]) .cell_range('B3:D3').set_background_color(st.DefaultColors.DARK_BLUE2).set_borders() .set_text_format(text_color=st.Color((255, 255, 255)), bold=True, vertical_alignment=st.VerticalAlignment.TOP, horizontal_alignment=st.HorizontalAlignment.CENTER) .cell_range((2, 1, 2, 1)).set_num_format(st.ReadyFormats.DECIMAL_PERCENT) .cell_range((2, 2, 2, 2)).set_num_format(st.Dollar('$#,##0.00')) .cell_range((3, 1, 4, 2)).set_background_color(st.Color('#ffd966')) .set_text_format(italic=True, font_size=16, font_family='Lexend') .set_borders(border_style=st.BorderStyle.DOUBLE, border_sides=st.BorderSides.OUTER_BORDERS, color=st.Color((55, 145, 200))) )
В результате этого блока кода мы получим это:

Детально расписывать каждую строку не будем, остановлюсь на главных моментах. На уровне юзер мы можем работать с файловой системой в гугл диске (подробнее далее). На уровне таблицы, мы можем делать практически все с текстом и ячейками. Чтобы открыть таблицу нужно записать ее индикатор (‘{spreadsheet_id}’), который находится в ссылке между spreadsheets/d/ и /edit#gid=...
При выборе страницы мы автоматически выбираем все строки и все столбцы. Для выделения области поменьше мы можем использовать стандартное текстовое выделение ‘B3:C’, либо использовать список из четырех чисел («строка», «столбец», «строка», «столбец»), где None будет выступать последней строкой или столбцом.
Все точные параметры так или иначе уже вписаны в библиотеку, чтобы узнать какой объект вам нужен, можно просто перейти к функцие и посмотреть тип данных. Пример:

Теперь создадим табличку и запишем ее в гугл таблицу
import speedtab as st import pandas as pd import random df = pd.DataFrame({'month': range(202301, 202311), 'amount': random.sample(range(500, 2000), 10), 'percent': [random.uniform(0, 0.5) for _ in range(10)]}) with st.Client('token2.json') as user: table1 = user.get_spreadsheet('{spreadsheet_id}') (table1.sheet('Two') .cell_range((2, 2, 2, df.shape[1] + 1)).write_dataframe(df, index=False).set_borders() .set_text_format(text_color=st.Color((255, 255, 255)), font_size=18) .set_background_color(color=st.Color('#765252')) .cell_range((2, 2, 2 + df.shape[0], df.shape[1] + 1)) .set_borders(border_sides=[st.BorderSides.OUTER_BORDERS, st.BorderSides.VERTICAL_BORDER]) .cell_range('D:D').set_num_format(st.ReadyFormats.PRETTY_DOLLAR) .cell_range('E:E').set_num_format(st.ReadyFormats.DECIMAL_PERCENT) )

Теперь нарисуем графики
with st.Client('token2.json') as user: table1 = user.get_spreadsheet('{spreadsheet_id}') (table1.sheet('Two').cell_range('B16') .add_chart(columns=[1], chart_type=st.ChartType.COLUMN, title='Income', data_start='C3') .cell_range('H3') .add_chart(columns=[2], target_axis=st.AxisPosition.RIGHT_AXIS, chart_type=st.ChartType.LINE, title='New Customers', data_start=(3, 3)) )

И еще один комбинированный
with st.Client('token2.json') as user: table1 = user.get_spreadsheet('1NFLoAyy52HaNyBv6V7P_OOag_1fsKmQ5xY2p6K_4uQY') (table1.sheet('One').cell_range('G3') .add_combo_chart( left_columns=[1], right_columns=[2], chart_type_left=st.ChartType.COLUMN, chart_type_right=st.ChartType.LINE, title='Overall', legend_position=st.LegendPosition.RIGHT_LEGEND, data_sheet_name='Two', data_start='C3') )

Теперь создадим папку и поместим туда наш файл
with st.Client('token2.json') as user: folder_id = user.create_folder('My reports') table1 = user.get_spreadsheet('1NFLoAyy52HaNyBv6V7P_OOag_1fsKmQ5xY2p6K_4uQY') user.move_spreadsheet_to_folder(table1, folder_id)

Если папка уже создана, тогда folder_id будет идентификатором, который находится в ссылке после https://drive.google.com/drive/folders/
Отлично. мы создали, отредактировали и переместили гугл таблицу используя библиотеку обертку SpeedTab.
ссылка на оригинал статьи https://habr.com/ru/articles/742994/
Добавить комментарий