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 domains
section에 외부에서 접근할 페이지의 도메인을 지정(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