Python — отличный язык программирования. Синтаксис может показаться странным и необычным, однако его легко изучить и использовать. Это питание Minecraft Pi Edition
наряду с множеством веб-сайтов и академических исследовательских проектов.
В этой статье я покажу вам, как читать и писать в Google Sheets с использованием Python. Убедитесь, что вы прочитали наши причины, почему программирование на Python не бесполезно
и наши пять настроек Google Sheets
которые необходимы для совместной работы. Они предоставят некоторые полезные знания. Если вы только начинаете свое путешествие по Python, эти 5 лучших веб-сайтов для изучения Python
хорошая отправная точка.
Настройка Google
Прежде чем переходить к коду, необходимо выполнить начальную настройку в Google Sheets.
Сначала создайте себе новый лист. Вы можете пропустить этот шаг, если он уже настроен. Я использую список раллийных автомобилей для этого примера:
Теперь вам нужно настроить параметры обмена. Вам нужно будет сгенерировать Подписанные учетные данные, что-то, что звучит сложнее, чем есть. Перейдите к консоли разработчиков Google и создайте новый проект (или используйте существующий):
Дайте вашему проекту подходящее имя и затем нажмите Создайте:
Под API Служб Google Выбрать Drive API:
выберите включить:
Теперь выберите полномочия в левом меню:
Нажмите на маленькую стрелку на Создать учетные данные кнопка:
Теперь выберите Ключ учетной записи службы:
выберите Учетная запись службы App Engine по умолчанию под Сервисный аккаунт а также JSON как формат:
Нажмите «Создать», и вы должны получить .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
Вот как это выглядит:
Не очень приятно это? 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
Или вы можете получить целый столбец. Это получает модель строка:
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? Дайте нам знать ваш опыт в комментариях ниже!