Python — отличный язык программирования. Синтаксис может показаться странным и необычным, однако его легко изучить и использовать. Он поддерживает Minecraft Pi Edition , а также множество веб-сайтов и академических исследовательских проектов.
В этой статье я покажу вам, как читать и писать в Google Sheets с использованием Python. Если вы только начинаете свое путешествие по Python, эти 5 лучших сайтов для изучения Python являются хорошей отправной точкой.
Настройка Google
Прежде чем перейти к коду, необходимо выполнить некоторые начальные настройки в Google Sheets.
Сначала создайте себе новый лист. Вы можете пропустить этот шаг, если он уже настроен. Я использую список раллийных автомобилей для этого примера:
Теперь вам нужно настроить параметры обмена. Вам нужно будет создать подписанные учетные данные , что звучит сложнее, чем есть. Перейдите к консоли разработчиков Google и создайте новый проект (или используйте существующий):
Дайте вашему проекту подходящее имя и нажмите « Создать» :
Под API Служб Google выберите Drive API :
Выберите Включить :
Теперь выберите Учетные данные в левом меню:
Нажмите маленькую стрелку на кнопке Создать учетные данные :
Теперь выберите ключ учетной записи службы :
Выберите учетную запись службы App Engine по умолчанию в разделе « Сервисная учетная запись» и JSON в качестве формата:
Нажмите кнопку «Создать», и вы должны загрузить файл .json . Переместите это в каталог вашего проекта и переименуйте в creds.json . Наконец, откройте файл и найдите client_email . Это должно быть название вашего проекта на appspot.gserviceaccount.com . Поделитесь своим Google Sheet с этим адресом электронной почты ( вверху справа > Поделиться > Введите адрес электронной почты ).
Вот и все, что касается 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
Теперь вы должны увидеть Hello, World! в вашей командной строке:
Теперь, когда Python работает правильно, давайте продолжим и настроим библиотеки. Удалить привет код мира. Теперь импортируйте Gspread и снова выполните код:
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
Вот как это выглядит:
Не очень приятно это? Python выгрузил содержимое объекта, не обращая внимания на форматирование. Поскольку он хранится в переменной all_cells , к нему можно получить доступ, как и к любому другому объекту Python. Вот как вы печатаете все значения ячеек в более хорошем формате:
for cell in all_cells: print cell.value
И это выглядит так:
Доступ к ячейкам возможен индивидуально (хотя это происходит медленно, если вы делаете это много раз):
A1 = sheet.acell('A2').value # this cell contains "Ford"
Или вы можете использовать координаты ячейки:
coord = sheet.cell(3, 0).value
Легко получить все значения для строки:
row = sheet.row_values(1) # first row
Или вы можете получить целый столбец. Это получает строку Model :
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 ). Может быть, вы могли бы привести в действие фоторамку или сделать офисную приборную панель — вот что я сделал!
Если вы также используете Excel, узнайте, как импортировать данные Excel в скрипты Python импортировать данные Excel в скрипты импортировать данные Excel в скрипты