Копирование данных из 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 шт):

Автор решения: contributorpw

Вам необходимо использовать Google Sheets API для получения данных из Таблицы.

Самое простое для понимания - использование сервисного аккаунта.

Создание сервисного аккаунта

  1. Идете в консоль https://console.cloud.google.com/home/dashboard
  2. Создаете сервисный аккаунт
  3. Запоминаете его email, типа "[email protected]"
  4. Выпускаете ключ
  5. Сохраняете ключ в файл creds.json

Скрипт

  1. Заполняете spreadsheet_id
  2. Заполняете range_name
  3. Добавляете сервисный аккаунт соавтором или читателем вашей Таблицы
  4. Запускаете
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АРТ-лаб']]
→ Ссылка