Копирование данных из Google Sheets при помощи Python
Мне необходимо создать программу которая сможет копировать и выводить в консоль значение запрошенной ячейки из Google Shields сложной таблицы. Есть Код:
import pandas as pd
url = 'link'
df = pd.read_csv(url)
print(df.loc[1:"col1"])
Но он способен достать информацию только из простой .csv таблицы, а это таблица уже не может быть форматом .csv так как она не может быть представлена в виде двухмерного массива. pd.read_excel вроде тоже не работает.
А как теперь это сделать со сложной таблицей(см пример)?
ССЫЛКА НА МОЙ ВЧЕРАШНИЙ ВОПРОС
Ответы (1 шт):
Вам необходимо использовать Google Sheets API для получения данных из Таблицы.
Самое простое для понимания - использование сервисного аккаунта.
Создание сервисного аккаунта
- Идете в консоль https://console.cloud.google.com/home/dashboard
- Создаете сервисный аккаунт
- Запоминаете его email, типа "[email protected]"
- Выпускаете ключ
- Сохраняете ключ в файл
creds.json
Скрипт
- Заполняете
spreadsheet_id - Заполняете
range_name - Добавляете сервисный аккаунт соавтором или читателем вашей Таблицы
- Запускаете
import httplib2
import os
from googleapiclient import discovery
from google.oauth2 import service_account
try:
scopes = [
"https://www.googleapis.com/auth/spreadsheets",
]
secret_file = os.path.join(os.getcwd(), "creds.json")
spreadsheet_id = "1evpX9QBS0cYSktPoInaSditbEcXaqmv1pear9nXb4hs"
range_name = "'расписание 2021'!B9"
credentials = service_account.Credentials.from_service_account_file(
secret_file, scopes=scopes
)
service = discovery.build("sheets", "v4", credentials=credentials)
values=service.spreadsheets().values().get(
spreadsheetId=spreadsheet_id,
range=range_name,
).execute()
print(values.get('values'))
except OSError as e:
print(e)
Вывод
В консоль выводится двумерный массив с размером 1x1 и единственным значением из ячейки 'расписание 2021'!B9 (ну, или что вы там напишете).
В данном случае
$> [['"Рисуем мир вокруг нас"\nАкимов М.\nАРТ-лаб']]