https://developers.google.com/sheets/api/quickstart/python 를 가져와서 요약했습니다.
동작 방식이나 이런것들이 잘 이해가 가지 않았는데, (처음에는 구글 시트의 문서 소유자가 api를 쓰게해주는 권한을 열고?
파이썬에서 그걸 받아와서 사용하는줄 알았다.) 동작을 간단하게 설명하자면
내가 만든 파이썬 프로그램이 '내 구글 계정의 권한'을 가지고 내가 엑세스할수 있는 구글시트를 들어가서 값을 읽거나
편집하는 방식이다. 설명이 상당히 잘 되어있는데 동작 방식등을 안 적어놔서 잠시 헷갈렸었다.
사용법.
0. pip install --upgrade google-api-python-client 설치해줍니다.
1. 위 링크의 Step 1대로 해줍니다.
2. Step 1에서 다운받은 client_secret.json을 본인이 원하는 곳에 넣어둡니다. path는 아래 예제의 CLIENT_SECRET_FILE을 보고 바꿔줍니다.
3. spreadsheetId 값을 링크에서 가져옵니다. spreadsheetId는
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
문서를 예로 들면 중간의 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms 값입니다. 아래 소스코드에서 변수 spreadsheetId에 넣어줍니다.
4. 가져올 범위를 지정합니다. 소스코드에서 rangeName이 해당 범위입니다. !앞의 값은 구글시트 아래의 탭 이름입니다.
바로 위 3번의 문서를 예로 들면 rangeName = 'Class Data!A2:E' 는 Class Data탭의 A2번~E까지 가져온다는 뜻입니다. E열에 데이터가 있는한 끝까지 가져 알아서 가져옵니다.
5. 처음 실행하면 웹브라우저가 열리며 제 구글 계정이 보입니다. 허용할거냐는 메시지에서 허용 하면 됩니다.
6. 출력된 결과를 보고 알아서 가공합니다.
7. 다른곳에서 사용하려면 client_secret.json과 자동으로 프로그램 실행시 만들어지는 sheets.googleapis.com-python-quickstart.json이 제대로 된 경로에 있어야 합니다.
아래는 나중에 참고용으로 또 쓰려고 예제 소스코드를 붙여놓음.
from __future__ import print_function import httplib2 import os from apiclient import discovery from oauth2client import client from oauth2client import tools from oauth2client.file import Storage try: import argparse flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() except ImportError: flags = None # If modifying these scopes, delete your previously saved credentials # at ~/.credentials/sheets.googleapis.com-python-quickstart.json SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly' CLIENT_SECRET_FILE = 'client_secret.json' APPLICATION_NAME = 'Google Sheets API Python Quickstart' def get_credentials(): """Gets valid user credentials from storage. If nothing has been stored, or if the stored credentials are invalid, the OAuth2 flow is completed to obtain the new credentials. Returns: Credentials, the obtained credential. """ home_dir = os.path.expanduser('~') credential_dir = os.path.join(home_dir, '.credentials') if not os.path.exists(credential_dir): os.makedirs(credential_dir) credential_path = os.path.join(credential_dir, 'sheets.googleapis.com-python-quickstart.json') store = Storage(credential_path) credentials = store.get() if not credentials or credentials.invalid: flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) flow.user_agent = APPLICATION_NAME if flags: credentials = tools.run_flow(flow, store, flags) else: # Needed only for compatibility with Python 2.6 credentials = tools.run(flow, store) print('Storing credentials to ' + credential_path) return credentials def main(): """Shows basic usage of the Sheets API. Creates a Sheets API service object and prints the names and majors of students in a sample spreadsheet: https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit """ credentials = get_credentials() http = credentials.authorize(httplib2.Http()) discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?' 'version=v4') service = discovery.build('sheets', 'v4', http=http, discoveryServiceUrl=discoveryUrl) spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' rangeName = 'Class Data!A2:E' result = service.spreadsheets().values().get( spreadsheetId=spreadsheetId, range=rangeName).execute() values = result.get('values', []) if not values: print('No data found.') else: print('Name, Major:') for row in values: # Print columns A and E, which correspond to indices 0 and 4. print('%s, %s' % (row[0], row[4])) if __name__ == '__main__': main()
'Python > 2.7 information' 카테고리의 다른 글
파이썬 읽어볼거리. (듀랑고 개발자분들의 글) (0) | 2018.04.30 |
---|---|
crontab으로 프로그램 돌릴시 주의할점, 자세한 에러 출력법 (1) | 2018.02.13 |
python 멀티프로세스 락, 등등 (0) | 2017.09.24 |
전문가를 위한 파이썬 책에서 알아낸 것들.. (0) | 2017.07.15 |
multiprocessing에서 여러 프로세스가 동시 변수 참조하는 문제 (2) | 2017.05.29 |