Настройка приложения Python для взаимодействия с Google таблицами

Созданный в QT Designer дизайн формы в соответствии с инструкциями https://tutorcloud.ru/mod/page/view.php?id=801 импортируем в наш проект. 

В приведенном ниже примере приняты следующие имена для виджетов формы:

routePoint - виджет типа LineEdit (ввод текста в одну строку);

sendPoint - виджет типа PushButton (кнопка отправки). 

Полный код того, что здесь показано на скриншотах приведен в конце этой статьи.

1. Заготовка (проверка работоспособности формы)

 

2. Устанавливаем в проект библиотеку oauth2client

 

2. Устанавливаем в проект библиотеку gspread 


Подключаем библиотеки к проекту:

 

Добавляем список области доступа. Первая ссылка позволяет авторизоваться в гугл таблице, вторая указывает точку входа в сервисы Google Drive.

 

Загружаем учетные данные. Чтобы эта строка выполнилась, необходимо разместить в корне рабочего проекта json-файл ключа. Если вы используете заготовку наставника, то скачать его можно здесь: https://disk.yandex.ru/d/ciLbcnb54auegg

 

Авторизуемся и создаем клиент

 

В переменную spreadsheet записываем открытую таблицу

 

Далее создаем переменную worksheetPoint для взаимодействия с конкретным листом таблицы

 

Теперь можно проверить, как взаимодействует наше приложение с таблицей

 

Полный код того, что уже сделано: 

import sys  # sys нужен для передачи argv в QApplication
from PyQt5 import QtWidgets
import design # Это наш конвертированный файл дизайна
import gspread # Библиотека для взаимодействия с гугл таблицами
from oauth2client.service_account import ServiceAccountCredentials #библиотека для авторизации

# Определяем область доступа
scope = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']

# Загружаем учетные данные
creds = ServiceAccountCredentials.from_json_keyfile_name('galichroutes-449709-ab64df0863a1.json', scope)

# Авторизуемся и создаем клиент
client = gspread.authorize(creds)

# Открываем таблицу по названию
spreadsheet = client.open('Достопримечательности Галича')

# Открываем первый лист, который имеет номер 0
#worksheetPoint = spreadsheet.get_worksheet(0)

#Либо можно обратиться к листу прямо по его имени
worksheetPoint = spreadsheet.worksheet('Точка маршрута')

class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
def __init__(self):
# Это здесь нужно для доступа к переменным, методам
# и т.д. в файле design.py
super().__init__()
self.setupUi(self) # Это нужно для инициализации нашего дизайна
(self.sendPoint.clicked.connect(self.printer))

def printer(self):
(self.routePoint.setText("Сработало!!!"))
# Записываем данные в ячейку A1
worksheetPoint.update_acell('A2', 'Hello, World!')

def main():

app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication
window = ExampleApp() # Создаём объект класса ExampleApp
window.show() # Показываем окно
app.exec_() # и запускаем приложение

if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем
main() # то запускаем функцию main()

Запустим приложение и нажмем на кнопку. В таблице, созданной наставником, по адресу: https://docs.google.com/spreadsheets/d/1Vfs3c6o8FeoMnhuuaQKGvS1WDstlTz_Mm-kbC_jrOV0/edit?usp=sharing в ячейке A2 должна появиться фраза «Hello, World!». 

Если все получилось, поздравляю! Можно теперь  работать с таблицей дальше.


Last modified: Sunday, 2 February 2025, 3:32 PM