Как читать и писать в Google Sheets с Python

Python — отличный язык программирования. Синтаксис может показаться странным и необычным, однако его легко изучить и использовать. Это питание Minecraft Pi Edition

наряду с множеством веб-сайтов и академических исследовательских проектов.

В этой статье я покажу вам, как читать и писать в Google Sheets с использованием Python. Убедитесь, что вы прочитали наши причины, почему программирование на Python не бесполезно

и наши пять настроек Google Sheets

которые необходимы для совместной работы. Они предоставят некоторые полезные знания. Если вы только начинаете свое путешествие по Python, эти 5 лучших веб-сайтов для изучения Python

хорошая отправная точка.

Настройка Google

Прежде чем переходить к коду, необходимо выполнить начальную настройку в Google Sheets.

Сначала создайте себе новый лист. Вы можете пропустить этот шаг, если он уже настроен. Я использую список раллийных автомобилей для этого примера:

Google листов раллийных автомобилей

Теперь вам нужно настроить параметры обмена. Вам нужно будет сгенерировать Подписанные учетные данные, что-то, что звучит сложнее, чем есть. Перейдите к консоли разработчиков Google и создайте новый проект (или используйте существующий):

консоль разработчиков Google

Дайте вашему проекту подходящее имя и затем нажмите Создайте:

название проекта консоли разработчиков

Под API Служб Google Выбрать Drive API:

Google Apps API

выберите включить:

google_api_enable

Теперь выберите полномочия в левом меню:

учетные данные Google API

Нажмите на маленькую стрелку на Создать учетные данные кнопка:

google api создать учетные данные

Теперь выберите Ключ учетной записи службы:

учетная запись службы Google API

выберите Учетная запись службы App Engine по умолчанию под Сервисный аккаунт а также JSON как формат:

создание учетной записи службы Google API

Нажмите «Создать», и вы должны получить .JSON скачать файл. Переместите это в каталог вашего проекта и переименуйте его creds.json. Наконец, откройте файл и найдите client_email. Это должно быть название вашего проекта на appspot.gserviceaccount.com. Поделитесь своим Google Листом с этим адресом электронной почты (В правом верхнем углу > Поделиться > Введите адрес электронной почты).

Вот и все, что касается Google Drive.

Настройка Python

Существует две основные версии Python: 2.7 и 3.x. Я буду использовать 2.7, но это не имеет значения, что вы используете. Вики Python устраняет различия, если вы заинтересованы. Вы можете установить виртуальную среду. Это выходит за рамки этой статьи, но хорошая практика.

Если вы используете Microsoft Windows, вам может потребоваться загрузить и установить Python. Mac OS поставляется с уже установленным Python. Поскольку я использую Mac, этот проект будет создан как таковой. Вы должны быть в состоянии достаточно хорошо следовать за машиной Windows или Linux. Обязательно прочитайте наше руководство

относительно того, стоит ли вам переключаться.

Сначала откройте новый терминал. Вам нужно будет использовать pip для установки некоторых пакетов Python. Это рекомендуемый инструмент, который упрощает управление пакетами. Поставляется с Python.

Вам необходимо установить клиент oauth2. Oauth — это фреймворк для веб-авторизации. Я не буду обсуждать детали этого, но необходимо, чтобы все работало правильно и безопасно. Его легко установить с помощью pip:

pip install oauth2client

Вам также может понадобиться установить PyOpenSSL, в зависимости от ваших настроек:

pip install PyOpenSSL

Теперь вам нужно установить Gspread от Антона Бурнашева на GitHub. Это отличная библиотека, написанная для облегчения доступа к Google Sheets на Python. Опять же, это легко установить с помощью pip:

pip install gspread

Теперь откройте ваш любимый текстовый редактор (я использую Sublime Text 3). Создайте новый файл Python и сохраните его в каталоге вашего проекта как google_io.py. Вот тестовый код:

print 'Hello, World!'

Вернуться к вашему Терминал и перейдите в каталог вашего проекта. Вы можете сделать это через CD команда. Ты можешь использовать Ls перечислить файлы и PWD показать ваш рабочий каталог.

Оказавшись в каталоге вашего проекта, вы можете выполнить скрипт Python следующим образом:

python google_io.py

Теперь вы должны увидеть Привет, мир! в вашей командной строке:

Питон Привет, мир

Теперь, когда Python работает правильно, давайте продолжим и настроим библиотеки. Удалить привет код мира. Теперь импортируйте Gрод и снова выполните код:

import gspread

Если все работает правильно, ничего не произойдет. Если вы получили ошибку, возможно, говоря нет модуля с именем X где X — это имя модуля, который вы ввели (Gspread), и дважды проверьте, что pip правильно установил модуль, и что вы не допустили опечатку.

Вот код для начала:

import json
import gspread
from oauth2client.client import SignedJwtAssertionCredentials
json_key = json.load(open('creds.json')) # json credentials you downloaded earlier
scope = ['https://spreadsheets.google.com/feeds']
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(), scope) # get email and key from creds
file = gspread.authorize(credentials) # authenticate with Google
sheet = file.open("MUO_Python_Sheet").sheet1 # open sheet

Это просто возвращает ваши данные из .JSON файл, а затем использует их для аутентификации в Google. Затем он открывает лист с именем MUO_Python_Sheet. Возможно, вам придется изменить это на имя вашего листа (при условии, что вы поделились им правильно). Python чувствителен к регистру, поэтому убедитесь, что вы правильно ввели этот код.

чтение

Теперь, когда все настроено, читать или записывать данные тривиально. Вот как вы выбираете диапазон ячеек (в данном случае, все ячейки автомобиля):

all_cells = sheet.range('A1:C6')
print all_cells

Вот как это выглядит:

google_sheets_python_read

Не очень приятно это? Python выгрузил содержимое объекта, не обращая внимания на форматирование. Потому что это хранится в all_cells переменная, к ней можно получить доступ как к любому другому объекту Python. Вот как вы печатаете все значения ячеек в более хорошем формате:

for cell in all_cells:
print cell.value

И это выглядит так:

Python Google листы все значения

Доступ к ячейкам возможен индивидуально (хотя это происходит медленно, если вы делаете это много раз):

A1 = sheet.acell('A2').value # this cell contains "Ford"

Или вы можете использовать координаты ячейки:

coord = sheet.cell(3, 0).value

Легко получить все значения для строки:

row = sheet.row_values(1) # first row

Или вы можете получить целый столбец. Это получает модель строка:

col = sheet.col_values(2) # models

Имейте в виду, что эти два метода не знают, сколько данных у вас есть. Если у вас есть только три строки, несколько дополнительных пустой клетки будут возвращены. Почти всегда лучше получить доступ к заранее определенному блоку ячеек.

Пишу

Это так же легко записать обратно на лист, и вы можете использовать имена ячеек или координаты, как при чтении:

sheet.update_acell('C2', 'Blue')
sheet.update_cell(2, 3, 'Blue')

На странице проекта на GitHub есть еще много примеров.

Если вы пишете на важный лист, вы можете рассмотреть безопасность клетка. Сохраните значение в определенной ячейке (я использую «Не удалять это»), а затем сначала прочитайте эту ячейку. Если содержимое изменилось, столбцы были добавлены или удалены на вашем листе, так что не начинайте писать! Вот как это может быть достигнуто:

if sheet.acell('B3') != 'SAFETY':
# something has changed in the sheet, DO NOT PROCEED
raise Exception("Oh My, I'm not ready for this.")
else:
# continue with your writing
sheet.update_acell('C2','Blue')

Это хорошая практика. Это гарантирует, что ваш скрипт не может случайно записать в неправильный столбец. Это не замена для правильного резервного копирования (у вас есть резервные копии, верно?).

Теперь, когда вы знаете основы, идите и сделайте что-нибудь классное! Узнайте, как использовать cron

планировать задачи в Linux (или проверить альтернативу Windows

). Может быть, вы могли бы привести в действие фоторамку

или сделать офисную приборную панель — это то, что я сделал!

Вы раньше общались с Google Sheets? Дайте нам знать ваш опыт в комментариях ниже!

Ссылка на основную публикацию
Adblock
detector