Этот пост является частью моей серии "30 блогов за 30 дней". Подробнее здесь.
У вас небольшой бизнес, в котором работает менее 20 человек? Вы используете таблицы Google, но хотите перейти на более надежное ИТ-решение? Почему? Вы можете просто использовать Google Sheets в качестве базы данных для простого приложения CRUD (создание, запись, обновление и удаление). позвольте мне показать вам, как.
Установка
- Перейдите в консоль Google API и создайте новый проект. Все, что вы хотите назвать.
- Затем вы попадете в библиотеку API. Найдите листы Google и включите его. Пока вы это делаете, также включите API Google Диска.
- На панели инструментов выберите меню «Гамбургер» и выберите IAM & Admin. Затем выберите «Учетная запись службы».
- Нажмите «Создать учетную запись службы».
- Назовите это как угодно. Скопируйте «электронную почту».
- Когда вы закончите, вы увидите страницу, подобную этой. Нажмите на меню с тремя точками и выберите «Создать ключ». Выберите JSON.
- Сохраните его в нужной папке как «client_secret.json».
- Получите желаемый лист и сделайте копию. Поделитесь с электронной почтой, которую вы скопировали со страницы учетной записи службы.
- Установите Питон 3.
Код
Вам понадобятся две внешние библиотеки gspread
и oauth2client
.
pip install gspread oauth2client
Создайте новый скрипт Python в той же папке, что и. Импортируйте полезные модули.
import gspread
from oauth2client.service_account import ServiceAccountCredentials
Теперь назначьте свои имена:
client_key = './client_secret.json'
scope = ['<https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive>']
Это важные вещи для клиентов OAuth 2.0. Не утруждайте себя пониманием этого, если только вы не стремитесь получить степень CS. Теперь пришло время авторизоваться.
cred = ServiceAccountCredentials.from_json_keyfile_name(clientkey,scope)
client = gspread.authorize(cred)
Теперь вы можете открыть любую рабочую книгу и открыть любой лист из этой рабочей книги с помощью клиента gspread. В этом случае мы будем работать с копией Test.
workbook = client.open('copy of Test')
В этой рабочей тетради 3 листа. Вы можете получить к ним доступ.
#To get sheets named in the standard convention sheet1 = workbook.sheet1
#To get sheets with custom names gdp = workbook.worksheet('GDP')
#To get sheets all the worksheets as a list all_worksheets = workbook.worksheets()
Все они будут возвращать объекты листа. Вы можете выполнять различные операции с этими листами в соответствии с Google API v4. Пока нас будут интересовать только ценности. На листе GDP
есть все страны мира, отсортированные по ВВП. Чтобы получить значение ячейки (скажем, B2
), мы можем использовать следующий код:
#Get value of a cell gdp.acell('B2').value
#or
gdp.cell(2,2).value
Вывод:
'United States'
Чтобы получить значения строки, столбца или всего листа:
#Get Values of a Row gdp.row_values(2) #['1', 'United States', '21,439,453']
#Get Values of a Columns gdp.col_values(2) #['Country', 'United States', 'China[n 2]', 'Japan',...]
#Get all the values gdp.get_all_records() #[['Rank', 'Country', 'GDP(in millions)'], ['1', 'United States', '21,439,453'], ['2', 'China[n 2]', '14,140,163'],...]
Вы также можете получить причудливый тип данных «запись» для ваших значений, который представляет собой просто список словарей:
gdp.get_all_records()
#[{'Rank': 1, 'Country': 'United States', 'GDP(in millions)': '21,439,453'}, {'Rank': 2, 'Country': 'China[n 2]', 'GDP(in millions)': '14,140,163'}, {'Rank': 3, 'Country': 'Japan', 'GDP(in millions)': '5,154,475'}, {'Rank': 4, 'Country': 'Germany', 'GDP(in millions)': '3,863,344'}, {'Rank': 5, 'Country': 'India', 'GDP(in millions)': '2,935,570'}...]
Использование col_values и row_values может очень быстро исчерпать вашу квоту API. К счастью, у python есть понимание списка:
values = gdp.get_all_values() records = gdp.get_all_get_all_records()
#Getting a row value is simple row2 = values[2]
#Getting a column value requires a list comprehension column2 = [row[1] for row in values]
#or
column2 = [i['Country'] for i in records]
Может получить любое значение столбца или строки, не запрашивая API Google Таблиц снова и снова.
Установка значения
Получение значения — это хорошо, но как насчет изменения значения. Для этого мы будем использовать Sheet1.
Предположим, я вижу, что значение количества сыра Бильбо Багина неверно.
sheet1.update('C2',25)
Это обновление ячейки C2 со значением 25.
Теперь я хочу добавить еще одну запись на лист:
sheet1.update('A4:D4',[['Steven Universe','Cheddar','15','At Homeworld']])
Сложность заключается в том, чтобы всегда помнить, что значение должно быть списком списков, даже если диапазон находится в одной строке.
Использование
Помимо автоматизации ввода данных через CRUD, вы можете:
- Используйте Pandas для серьезного анализа данных.
- Сопоставьте все свои данные из других источников, таких как электронная почта, данные о поставщиках, информация о клиентах и т. д.
- Создайте базовую CRM, используя Google Forms + Python.
И многие другие варианты. Так что получайте удовольствие, играйте и экономьте время и, возможно, даже деньги.