Node.js 런타임을 사용하여 Cloud Functions에서 Google Workspace 부가기능을 만듭니다.
목표
- 환경을 설정합니다.
- Cloud 함수를 만들고 배포합니다.
- 부가기능을 만들고 배포합니다.
- 부가기능을 설치합니다.
기본 요건
- Google Cloud 프로젝트.
- Cloud 프로젝트에 결제를 사용 설정해야 합니다. 프로젝트의 결제 상태를 확인하는 방법을 알아보세요.
- Cloud 프로젝트로 구성된 Cloud SDK
환경 설정
Google Cloud 콘솔에서 Cloud 프로젝트 열기
- Google Cloud 콘솔에서 프로젝트 선택 페이지로 이동합니다.
- 사용할 Google Cloud 프로젝트를 선택합니다. 또는 프로젝트 만들기를 클릭하고 화면에 표시된 안내를 따릅니다. Google Cloud 프로젝트를 만드는 경우 프로젝트에 결제를 사용 설정해야 할 수 있습니다.
OAuth 동의 화면 구성
Google Workspace 부가기능에는 동의 화면 구성이 필요합니다. 부가기능의 OAuth 동의 화면을 구성하면 Google에서 사용자에게 표시할 내용이 정의됩니다.
- Google Cloud 콘솔에서 메뉴 > API 및 서비스 > OAuth 동의 화면으로 이동합니다.
- 사용자 유형에서 내부를 선택한 다음 만들기를 클릭합니다.
- 앱 등록 양식을 작성한 후 저장 및 계속을 클릭합니다.
지금은 범위 추가를 건너뛰고 저장하고 계속을 클릭해도 됩니다. 향후 Google Workspace 조직 외부에서 사용할 앱을 만들 때는 사용자 유형을 외부로 변경한 후 앱에 필요한 승인 범위를 추가해야 합니다.
- 앱 등록 요약을 검토합니다. 변경하려면 수정을 클릭합니다. 앱 등록이 올바른 것 같으면 대시보드로 돌아가기를 클릭합니다.
Cloud 함수 생성 및 배포
로컬 터미널에서 Cloud Functions, Cloud Build, Google Workspace 부가기능 API를 사용 설정합니다.
gcloud services enable cloudfunctions cloudbuild.googleapis.com gsuiteaddons.googleapis.com
빈 디렉터리에서 다음 샘플 코드로
function.js
파일을 만듭니다./** * Cloud Function that loads the homepage for a * Google Workspace Add-on. * * @param {Object} req Request sent from Google * @param {Object} res Response to send back */ exports.loadHomePage = function addonsHomePage (req, res) { res.send(createAction()); }; /** Creates a card with two widgets. */ function createAction() { return { "action": { "navigations": [ { "pushCard": { "header": { "title": "Cats!" }, "sections": [ { "widgets": [ { "textParagraph": { "text": "Your random cat:" } }, { "image": { "imageUrl": "https://cataas.com/cat" } } ] } ] } } ] } }; }
함수를 배포합니다.
gcloud functions deploy loadHomePage --runtime nodejs12 --trigger-http
메시지가 표시되면 함수의 인증되지 않은 호출을 허용하지 않도록 지정합니다. 함수가 배포되는 데 몇 분 정도 걸릴 수 있습니다.
부가기능 배포 만들기
부가기능의 서비스 계정 이메일을 찾습니다.
gcloud workspace-add-ons get-authorization
서비스 계정에
cloudfunctions.invoker
역할을 부여합니다.gcloud functions add-iam-policy-binding loadHomePage \ --role roles/cloudfunctions.invoker \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL
배포된 함수의 URL을 가져옵니다. URL을 가져오려면 다음 명령어를 실행하고
httpsTrigger
섹션 아래에서url
필드를 찾습니다.gcloud functions describe loadHomePage
다음 샘플 코드를 사용하여
deployment.json
파일을 만듭니다.URL
을 이전 단계에서 배포된 함수의 URL로 바꿉니다.{ "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"], "addOns": { "common": { "name": "My HTTP Add-on", "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png", "homepageTrigger": { "runFunction": "URL" } }, "gmail": {}, "drive": {}, "calendar": {}, "docs": {}, "sheets": {}, "slides": {} } }
배포를 만듭니다.
gcloud workspace-add-ons deployments create quickstart \ --deployment-file=deployment.json
부가기능 설치
개발 모드에서 배포를 설치합니다.
gcloud workspace-add-ons deployments install quickstart
Gmail을 열거나 새로고침하여 부가기능을 확인합니다. 오른쪽의 툴바에서 비커 아이콘을 찾습니다.
아이콘을 클릭하여 부가기능을 엽니다. 메시지가 표시되면 부가기능을 승인합니다.
선택사항: 삭제
계정에 요금이 청구되지 않도록 하려면 생성된 리소스를 삭제하세요.
Google 계정에서 부가기능을 제거합니다.
gcloud workspace-add-ons deployments uninstall quickstart
이 빠른 시작에서 사용한 리소스의 비용이 청구되지 않도록 하려면 Cloud 프로젝트를 삭제하세요.
gcloud projects delete PROJECT_ID
PROJECT_ID를 퀵스타트에 사용한 Cloud 프로젝트의 ID로 바꿉니다. Cloud 프로젝트 ID는 Google Cloud 콘솔의 대시보드 페이지에서 찾을 수 있습니다.
다음 단계
Google Workspace 부가기능에 더 많은 기능을 추가하려면 다음 가이드를 참고하세요.