В этой статье рассказывается, как автоматически обновлять Google Sheet с помощью Python, уделяя особое внимание моим наиболее часто используемым методам:
- Создать новый лист
- Обновить существующий лист
- Добавить к существующему листу
Для начала следуйте гайду, чтобы получить свои учетные данные и установить библиотеку. В файле учетных данных вы найдете адрес электронной почты. Чтобы изменить существующую электронную таблицу, необходимо предоставить разрешение на редактирование электронной почте клиента. Затем мы можем начать играть с API.
Подключиться к Google API
from oauth2client.service_account import ServiceAccountCredentials from googleapiclient import discovery SCOPES = ['https://www.googleapis.com/auth/drive'] creds = ServiceAccountCredentials.from_json_keyfile_name( 'credentials.json', SCOPES) service = discovery.build('sheets', 'v4', credentials=creds)
При первом выполнении фрагмента кода он направит пользователей на страницу авторизации. Войдите в свою учетную запись Google, чтобы авторизоваться.
Создать новый лист
Этот метод создаст новый лист в существующей электронной таблице. spreadsheetId
можно найти в URL-адресе.
Формат URL: https://docs.google.com/spreadsheets/d/spreadsheetId
/edit#gid=0.
from pprint import pprint # fill in spreadsheetId spreadsheetId = '1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # name your new sheet title = 'MySheet' # call the Sheets API body = {'requests': [ { 'addSheet': { 'properties': { 'title': title } } }]} request = service.spreadsheets().batchUpdate( spreadsheetId=spreadsheetId, body=body) response = request.execute() pprint(response)
Обновить существующий лист
Этот метод будет записывать данные из первой строки или любой строки, указанной в range_
.
spreadsheetId = '1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' range_ = 'MySheet!A1:C' values = [ ['date', 'event', 'count'], ['6/1', 'login', 100] ] body = { 'range': range_, 'values': values, 'majorDimension': 'ROWS' } request = service.spreadsheets().values().update( spreadsheetId=spreadsheetId, range=range_, valueInputOption='USER_ENTERED', body=body) response = request.execute() pprint(response)
Добавить к существующему листу
Этот метод добавит данные к существующему набору данных в электронной таблице.
spreadsheetId = '1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' range_ = 'MySheet!A:C' values = [ ['6/2', 'login', 200], ['6/2', 'complain', 1] ] body = { 'range': range_, 'values': values, 'majorDimension': 'ROWS' } request = service.spreadsheets().values().append( spreadsheetId=spreadsheetId, range=range_, valueInputOption='USER_ENTERED', insertDataOption='INSERT_ROWS', body=body) response = request.execute() pprint(response)
Использованная литература:
Спасибо за чтение!