【Python】Google SpreadSheets에서 수중 CSV 파일 가져오기
9808 단어 CSV파이썬GoogleSpreadSheetapi
개요
제목 그대로.
Google SpreadSheets에서 직접 CSV 파일의 내용을 가져옵니다.
![](https://s1.md5.ltd/image/c93d12f5a0e9d9414bfd7bb33237baf3.gif)
환경
아래 준비
먼저 외부에서 Google SpreadSeets에 액세스하기 위해 'Google Cloud Platform'을 설정합니다.
htps : // 이런. cぉd. 오, ぇ. 코m/
![](https://s1.md5.ltd/image/3b096866350b85408a16067d123be3e3.jpeg)
아직 Google Cloud Platform 계정을 가지고 있지 않은 분은 아래 기사 등을 참고로 작성해 주세요.
참조 기사 : 앞으로 시작하는 GCP (GCE) 안전하게 무료 테두리를 쓰러뜨리세요
Google Sheets API 사용
![](https://s1.md5.ltd/image/a876e9f4baaaac42bb504f0521635b59.png)
왼쪽 사이드 바에서 "API와 서비스 → 라이브러리"를 선택. 각종 Google API가 나오므로 그 중에서 'Google Sheets API'를 찾아서 활성화합니다.
![](https://s1.md5.ltd/image/8c52203d57d4517de52cd3b0a7bb111b.png)
서비스 계정 만들기
다음 왼쪽 사이드 바에서 "API와 서비스 → 자격 증명"을 선택. "서비스 계정"을 만듭니다.
참조 기사 : GCP 서비스 계정 이해
![](https://s1.md5.ltd/image/05adbe8a676d8bb576cc8b1b846af326.jpeg)
서비스 계정명 이외는 기본적으로 임의 입력 항목이므로, 특히 조건이 없으면 공란으로 괜찮습니다.
![](https://s1.md5.ltd/image/d6f215dfa3cc8c9a0d2bd7c49890988d.jpeg)
비밀 키 얻기
서비스 어카운트 상세 페이지의 하단에 가면 「키를 추가」라고 하는 항목이 있으므로, JSON 형식으로 비밀키를 작성. 그러면 수중 장치에 JSON 파일이 다운로드되므로 "client_secret.json"에 이름을 바꾸어 보관하십시오. (나중에 사용합니다.)
Google SpreadSheets 만들기
![](https://s1.md5.ltd/image/18d1a23f4b37dd1b133f9812cf43513b.png)
이번 조작을 위한 적당한 Google SpreadSheets를 작성해 둡니다.
![](https://s1.md5.ltd/image/1c750c907d11b93465d02074eea3b530.jpeg)
그리고 오른쪽에있는 "공유"버튼에서 방금 만든 서비스 계정의 이메일 주소를 "편집자"로 추가하는 것도 잊지 마세요.
코드
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
![](https://s1.md5.ltd/image/c93d12f5a0e9d9414bfd7bb33237baf3.gif)
후기
수고하셨습니다. 기본적인 흐름은 이상입니다. 그리고는 각자의 목적에 맞추어 커스터마이즈 해 보세요. Lambda라든지 잘 사용할 수 있을 것 같은 생각이 듭니다.
Reference
이 문제에 관하여(【Python】Google SpreadSheets에서 수중 CSV 파일 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazama1209/items/5f30197640554f84811f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)