【Python】Google SpreadSheets에서 수중 CSV 파일 가져오기
9808 단어 CSV파이썬GoogleSpreadSheetapi
개요
제목 그대로.
Google SpreadSheets에서 직접 CSV 파일의 내용을 가져옵니다.
환경
아래 준비
먼저 외부에서 Google SpreadSeets에 액세스하기 위해 'Google Cloud Platform'을 설정합니다.
htps : // 이런. cぉd. 오, ぇ. 코m/
아직 Google Cloud Platform 계정을 가지고 있지 않은 분은 아래 기사 등을 참고로 작성해 주세요.
참조 기사 : 앞으로 시작하는 GCP (GCE) 안전하게 무료 테두리를 쓰러뜨리세요
Google Sheets API 사용
왼쪽 사이드 바에서 "API와 서비스 → 라이브러리"를 선택. 각종 Google API가 나오므로 그 중에서 'Google Sheets API'를 찾아서 활성화합니다.
서비스 계정 만들기
다음 왼쪽 사이드 바에서 "API와 서비스 → 자격 증명"을 선택. "서비스 계정"을 만듭니다.
참조 기사 : GCP 서비스 계정 이해
서비스 계정명 이외는 기본적으로 임의 입력 항목이므로, 특히 조건이 없으면 공란으로 괜찮습니다.
비밀 키 얻기
서비스 어카운트 상세 페이지의 하단에 가면 「키를 추가」라고 하는 항목이 있으므로, JSON 형식으로 비밀키를 작성. 그러면 수중 장치에 JSON 파일이 다운로드되므로 "client_secret.json"에 이름을 바꾸어 보관하십시오. (나중에 사용합니다.)
Google SpreadSheets 만들기
이번 조작을 위한 적당한 Google SpreadSheets를 작성해 둡니다.
그리고 오른쪽에있는 "공유"버튼에서 방금 만든 서비스 계정의 이메일 주소를 "편집자"로 추가하는 것도 잊지 마세요.
코드
API를 통해 Google SpreadSheets에 액세스할 준비가 되었으므로 드디어 코드를 작성합니다.
환경 구축
먼저 Python을 실행할 수 있는 환경을 Docker에서 준비합니다.
디렉토리 만들기
$ mkdir csv-to-google-spread-sheets
$ cd csv-to-google-spread-sheets
$ mkdir opt
다양한 파일 만들기
touch Dockerfile
touch docker-compose.yml
touch requirements.txt
./Dockerfile
FROM python:3
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
ADD . /code
WORKDIR /code
RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt
./docker-compose.yml
version: '3'
services:
python3:
restart: always
build: .
container_name: 'python3'
working_dir: '/root/'
tty: true
volumes:
- ./opt:/root/opt
./requirements.txt
gspread
oauth2client
client_secret.json 배치
서비스 계정을 만들 때 다운로드한 개인 키 "client_secret.json"을 opt 폴더 아래에 배치합니다.
최종적으로 다음과 같은 구성이 되어 있으면 OK.
csv-to-google-spread-sheets
├─ opt
├─ client_secret.json
├─ docker-compose.yml
├─ Dockerfile
├─ requirements.txt
컨테이너 시작
$ docker-compose up -d
$ docker exec -it python3 /bin/bash
$ cd opt
root@*********:~/opt#
테스트 실행
touch test.py
./opt/test.py
print('test')
$ python test.py
test
제대로 「test」라고 출력되고 있으면 성공입니다.
구현
환경 구축을 할 수 있었으므로, 본격적인 코드를 써 갑니다.
$ touch gs.py
./opt/gs.py
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import csv
SPREADSHEET_KEY = 'それぞれの値を入力' # 「docs.google.com/spreadsheets/d/xxxxxxxxxxxxx/edit#gid=0」の「xxxxxxxxxxxxx」部分
scope = 'https://spreadsheets.google.com/feeds'
credentials_file_path = './client_secret.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(credentials_file_path, scope)
gc = gspread.authorize(credentials)
workbook = gc.open_by_key(SPREADSHEET_KEY)
workbook.values_update(
'シート1', # どのシートに書き込むのかを指定
params={'valueInputOption': 'USER_ENTERED'},
body={'values': list(csv.reader(open('./test.csv', encoding='utf_8_sig')))}
)
마지막으로 Google 스프레드시트에 가져올 CSV 파일을 준비합니다.
$ touch test.csv
/opt/test.csv
Name,Age,Country
Taro,20,Japan
다음 명령을 실행하고 해당 Google SpreadSheets에 ↑의 내용이 기록되어 있으면 성공입니다.
$ python gs.py
후기
수고하셨습니다. 기본적인 흐름은 이상입니다. 그리고는 각자의 목적에 맞추어 커스터마이즈 해 보세요. Lambda라든지 잘 사용할 수 있을 것 같은 생각이 듭니다.
Reference
이 문제에 관하여(【Python】Google SpreadSheets에서 수중 CSV 파일 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazama1209/items/5f30197640554f84811f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)