GAS Interface
REST API#
- 외부 시스템에서 G.Suite에 REST방식으로 접근할 수 있도록 API 제공
- For javascript: https://apis.google.com/js/api.js
- 문서 파일 및 스크립트 생성및 편집 기능
- 스크립트 함수 호출 기능
G.Suite와 외부 Interface 방법#
- 외부 시스템에서 직접적으로 문서파일 등에 접근 가능 (2계층 모델)
- 직접적인 문서의 접근은 GAS로 구현하고 외부에서 함수 호출하는 MVC 방식 (3계층 모델)
- 두번째 방식을 채용
Project 구현및 Debugging#
Project 생성#
- Drive
New-More-Google Apps Script메뉴 선택 Google Apps Script가 메뉴에 없으면Connect more apps에서Google Apps Script검색하여 연결후 작업- 생성후 브라우저에 Script Editor가 표시
Project 이름 설정#
- Editor에서 Untitled Project를 적절한 이름으로 변경 후 저장
- 외부에서는 자동생성된 Script Id를 기준으로 접근하므로 이름은 관리상의 목적으로 사용
외부 연동 함수 구현#
- G.Suite에 연동할때 DocumentApp, SpreadsheetApp, FormApp, MailApp등의 전용 Class를 사용
함수 Debugging#
- Editor 상단에서 함수 선택 후 Run 또는 Debug
- 인자가 있는 함수일 경우 테스트 함수를 작성해서 테스트
- 코드중에
Logger.log함수로 로그를 남기면View-Logs에서 확인
Project Publish#
스크립트를 외부에서 접근할 수 있도록 하려면 Publish및 보안 설정 과정 필요
Deploy#
- Editor의
Publish-Deploy as API Executable메뉴 - 버전정보를 입력 후 Deploy
Cloud Platform 등록#
- Editor의
Resources-Cloud Platform project메뉴 - 상단의 Project Name - project-id-xxxx 링크를 클릭하면 Cloud Platform에 해당 id로 생성후 이동
::: warning 2019. 4. 19 추가
GCP가 Update되면서 Editor에서 자동 생성되는 기능이 차단됨.
GCP에서 수동으로 Project를 생성 후 Auth Consent screen 설정 후 Resources - Cloud Platform project에서 생성된 프로젝트의 번호를 등록해주어야 함.
:::
Project 보안 설정#
OAuth Consent screen 설정#
API overview-Credentials페이지로 이동OAuth Consent screen탭으로 이동Authorized domainssection에 외부에서 접근할 페이지의 도메인을 지정(localhost 제외)
::: warning 주의 사항 등록한지 얼마 안된 도메인은 인식이 안될 수 있다. DNS 캐시가 갱신될 때 까지 기다려야한다. (2 ~ 48 시간) :::
Credentials Client 설정#
Credentials탭으로 이동- Cloud Platform으로 Project생성시
App Scripts라는 client ID 자동 생성. Script Editor에서 사용하는 Client로 삭제 시 디버깅및 실행 오류 해당 Client는 사용자에 편집권한이 없으므로 사용 불가 외부에서 사용할 별도 Client 필요 create credentials-OAuth client ID선택- Authorized JavaScript origins 항목에 접근할 수 있는 Root URI를 등록 예) http://localhost:8080, https://mywebsvr.com
- 생성후 발급된 Client ID를 기록
Credentials API Key 설정#
create credentials-API Key선택- Restrict는 설정 필요하지 않음
- 발급된 API Key를 기록
Timer Trigger 설정#
- Editor의
Edit-Current Project's Tirgger선택 - 트리거 추가
- 실행 함수 선택하고 발생 주기를 선택하고 저장
- Trigger화면에서
Executions,Failed Executions로그 조회 가능
Script 호출#
필수 정보#
- Client ID
- App Key
- Script ID Project의 File - Project properties에서 획득
- Scope Project properties의 Scope 탭에서 획득, 다수일 때 공백으로 구분. 예) 'https://www.googleapis.com/auth/script.send_mail https://www.googleapis.com/auth/spreadsheets' Scope정보는 소스를 기반으로 자동으로 추출, 사용하는 App Class가 추가되면 재적용 필요
client load#
sign in#
init#
function call#
::: warning 추후 개선 Point 사용자 인증을 코드로 자동 처리해야 하는데, 현재까진 해당부분 학습이 안되어 수동으로 인증해야 합니다.:::
에제 프로젝트 개요#
- Spreadsheet을 data repository로 활용
- 라이선스 요청, 승인 과정 외부 웹화면 연동및 메일발송
- Timer Trigger로 발급예정일 도래시 공지 발송
예제 프로젝트 소스#
Google Apps Script#
- Code.gs
Client#
- consts.js
- request.html
- issue.html