Google Apps Script - Google Sheet의 데이터를 python으로 보내기
Issue
-
Google Apps Script에서 “배포”를 사용해서 처리해줘도 될것 같은데, 이 부분이 잘 해결되지 않아서 일단 넘어갔다.
-
Google Apps Script에서 “배포”를 통해 URL에 접근하는 것은 브라우저를 통한 정상적인 접근만이 가능한 것으로 보임. 브라우저를 통해 본인이 해당 URL에 접근 가능하다는 것을 인증해야 하기 때문으로 보임.
-
나중에 언젠가 풀어보자 호호.
Google Apps Script - Google Sheet의 데이터를 python으로 보내기
- Google Apps Script를 사용하여 google sheet의 데이터를 python에서 손쉽게 받아볼 수 있도록 해주려고 합니다.
- 제가 주로 쓰는 언어는 python이고, python code 상에서 구글 시트에 저장된 정보를 가져오는 것은 꽤 번거롭습니다.
- gspread를 사용해도 되는데, 제 기억에는 별로 코드가 깔끔해지지 않았어요.
- 따라서, 오늘 해보려는 것은 구글 시트 내에 있는 데이터를 읽고, 이를 외부에서 사용가능하도록 json등의 형태로 보내줄 수 있도록 하려고 해요.
doGet, doPost 함수 정의
- python과 Google Apps Script는 서로 http를 통해 연결됩니다.
- 이를 위해 Google Apps Script 내에
doGet()함수와doPost()함수를 만듭니다.
function doGet(e) {
// Get방식에 대해서 대응하는 함수
// e: 전달받은 데이터.
var spreadsheet = SpreadsheetApp.getActive()
var sheet = spreadsheet.getSheetByName("시트1")
// 일단은 그냥 [1, 2, 3]과 같은 간단한 데이터를 보낸다고 할게요.
var returnArr = [1, 2, 3]
// HtmlService.createHtmlOutput()를 사용해서 보내려는 데이터를 감싸줍니다.
return HtmlService.createHtmlOutput(JSON.stringify(returnArr))
//
}
function doPost(e) {
// post 방식에 대해서 대응하는 방식
// 일단은 따로 만들지 않았습니다.
}
- 그 다음, 배포 > 새 배포 > ’웹 앱’을 선택하고 ‘배포’ 버튼을 꾹 눌러 줍니다.
- 그럼 다음과 같은 형태의 URL이 만들어지죠. 권한이 구글 계정에 종속되어 있기 때문에, 다른 사람이 해당 URL에 접속한다고 해서 뭘 할수는 없습니다.
https://script.google.com/macros/s/.......
- 그냥 만들어진 URL을 웹 브라우저 주소창에 쳐도 뭐 됩니다. 그럼 일단 제대로 만들어졌는지 확인할 수는 있죠.
python code
- 저는 python에서
requests라이브러리를 사용하여, 해당 URL에 접속해서 데이터를 가져와 보겠습니다.
code...
- code 자체는 잘못된 게 없는데, 데이터가 긁어와지지 않습니다.
- 웹 브라우저에서는 되는데, python에서는 안되는 것은 python에서 접속할 때, 얘에게 접근 권한이 없기 때문이죠. 웹 브라우저에서는 이미 Google에 로그인된 상태이기 때문에, 아무 문제없이 해당 URL에 접속할 수 있지만, python에서는 그 부분이 해결되지 않은 것이죠.
- 과거에는 “익명”도 접근할 수 있도록 해준 것 같은데, 현재는 반드시 구글 ID가 있는 사람에게만 허용해주는 것 같아요.
Issue
- 데이터는 구글 시트에 저장하고, 분석은 python에서 함. 구글 시트의 파일을 다운받아서 그 파일을 분석해도 되기는 하는데, 그보다는 구글 시트를 서버처럼 굴리면서 바로 데이터를 전송해주는 형태로 해주고 싶음. 그게 좀 더 seamless함.
- 그냥 크롬 브라우저를 사용하면 될 줄 알았는데 그렇지 않음.
배포 유형 이제
- 배포는 다음과 같은 4가지 유형으로 나뉜다. 우선 이 4가지의 차이를 알아야 하고.
- 웹 앱
- API 실행 파일
- 부가기능
- 라이브러리
- API 실행 파일, 부가 기능의 경우 다음과 같은 메세지가 뜹니다. 아마 현재는 로컬에서 관리되고 있다면, 이를 GCP에 올려서 여러 유저들에게서 공통으로 관리되는 종류의 클라우드 프로젝트로 변경되어야 한다는 의미로 받아들여집니다.
- 이 Apps Script 프로젝트는 Apps Script로 관리되는 Google Cloud Platform(GCP) 프로젝트를 사용하고 있습니다.
- Google Workspace Marketplace에 API 실행 파일 유형을 배포하려면 이 Apps Script 프로젝트를 사용자가 관리하는 Google Cloud Platform(GCP) 프로젝트로 전환해야 합니다.