안녕하세요. 이지이지입니다.
예전에 거의 같은 제목으로 구글 스프레드시트 사용하기에 대해 포스팅한 적이 있었는데요.
블로그의 통계를 보았을 때 생각보다 조회수가 높은 편이어서 다시 한번 그 글에 대해 생각해 보았습니다.
그 결과 내용이 너무 고난이도 인것 같아,
이번 포스팅에서는 구글 스프레드시트를 사용하는 좀 더 간단한 방법에 대해 알려드리고자 합니다.
이번 포스팅에서는 앱을 통해 구글 스프레드시트의 자료를 읽어 오는 것만 가능하다는 것을 미리 말씀드리며,
앱에서 구글 스프레드시트의 내용 읽기, 쓰기, 수정, 삭제까지 원하시는 분께서는 저의 이전 포스팅을 참고하시기 바랍니다.
앱인벤터에서 구글 스프레드시트 사용하기(feat. Google Apps Script)
안녕하세요. 이지이지입니다. 지난 앱인벤터 포스팅에서는 앱인벤터에서 엑셀 사용방법에 대해 알아보았습니다. 앱인벤터에서 엑셀 사용하기 안녕하세요. 이지이지입니다. 이번 포스팅에서는
egeasy.tistory.com
오늘 포스팅에서 사용한 앱인벤터 소스파일을 내려받아 참고하시구요.
앱인벤터에서 구글 스프레드시트를 사용하기 위해서는 먼저 스프레드시트를 만들고, 간단한 사전 설정이 필요합니다.
구글 스프레드시트 설정하기 |
앱인벤터에서 사용하고자 하는 구글 스프레드시트를 작성한 후, 다음 이미지에서처럼
"링크가 있는 모든 사용자에게 공개", "뷰어"로 공유를 설정합니다.
그리고 링크 복사를 눌러 스프레드시트의 링크 주소를 다른 곳에 기록해 둡니다.
링크 주소의 예는 다음과 같으며, 앱인벤터에서 조금 수정해서 사용하게 됩니다.
https://docs.google.com/spreadsheets/d/1Fv2X4WjQ6m~~aaUm2wfeEbU8-FSYlOgvZ_onjvSmg/edit?usp=sharing
이제 스프레드시트의 설정은 모두 끝이 났습니다.
앱인벤터 필수 컴포넌트 및 블록 설명 |
앱인벤터에서 구글 스프레드시트와 연결하기 위해서는 [Connectivity] 팔레트 안에 있는 웹(Web) 컴포넌트를 사용합니다.
웹 컴포넌트를 화면에 추가하고, 다음과 같이 설정을 합니다.
- Url을 제외한 항목은 모두 기본값으로 둡니다.
- Url은 구글 스프레드시트에서 복사해 둔 링크를 붙여넣기 합니다.
이 때 링크의 마지막 부분을 다음과 같이 수정하여 붙여넣도록 합니다.
원본 링크: https://docs.google.com/spreadsheets/d/1Fv2X4WjQ6m~~aaUm2wfeEbU8-FSYlOgvZ_onjvSmg/edit?usp=sharing
수정 링크: https://docs.google.com/spreadsheets/d/1Fv2X4WjQ6m~~aaUm2wfeEbU8-FSYlOgvZ_onjvSmg/export?format=csv
※ export는 내보내라는 의미이고, 이 때 내보내는 파일의 format(형식)은 csv(콤마로 분리된 항목)로 한다는 의미입니다.
이제 저의 포스팅에서 사용된 소스 중 필수적이라고 생각되는 부분에 대해서 설명드리겠습니다.
예제에서 사용된 구글 스프레드시트의 자료를 함께 보며 알아보겠습니다.
Screen1이 실행되었을 때 Web 컴포넌트를 통해 자료를 가져옵니다.
- 위의 디자이너창에서 설정해 둔 Url 주소의 자료를 가져오게 됩니다.
① Web1 컴포넌트가 Web1.Get 블록을 통해 값을 전달받았을 때,
② 변수 listFromSheet에 웹 컴포넌트를 통해 받은 자료(responseContent)를 list 형태로 변환하여 저장합니다.
- 예로 사용된 구글 스프레드시트의 행의 개수는 5, 열의 개수는 3입니다.
- list from csv table text 블록은 가져오는 자료의 행의 개수가 2이상일 때 사용합니다.
→ 굳이 번역해보자면, csv(콤마로 분리된 항목) 형태로 되어 있는 table text(표 형식의 텍스트)를 list 형태로 변환하라 입니다.
- 참고로, list from csv row text 블록은 가져오는 자료의 행의 개수가 1일때 사용합니다.
이렇게 구글 스프레드시트로부터 자료를 받아온 변수 listFromsSheet에는 다음과 같이 데이터가 저장되게 됩니다.
L[ A["과일", "동물", "나라"]A, B["사과", "강아지", "대한민국" ]B, C["바나나", "고양이", "미국" ]C, D["포도", "사자", "독일" ]D, E["복숭아", "코끼리", "브라질" ]E ]L
앱인벤터에서는 리스트를 대괄호 [ ]로 표현합니다.
list from csv tabel text블록을 사용하게 되면 기본적으로 하나의 가장 큰 리스트(예를 들어 L로 지칭)가 저절로 만들어지게 되며, 각 행마다 리스트 L안에 하위 리스트를 만들게 됩니다.(예를 들어 A, B, C, D, E로 지칭)
따라서 두 번의 select list item list / index 블록을 사용하면 하나의 특정한 항목을 추출할 수 있습니다.
- 만약 ①에 2를 입력하면 ["사과", "강아지", "대한민국"]이 먼저 가져와지고,
- ②에 3을 입력하면 세 번째 항목인 "대한민국"이 추출되는 것입니다.
이상 앱인벤터에서 구글 스프레드시트 사용하기 간단 버전(읽기만 가능)이었습니다.
사용자가 입력할 필요가 없는 데이터베이스라면 구글 스프레드시트도 좋은 대안이 아닐까 싶습니다.
댓글