Node.js 런타임을 사용하여 Cloud Functions에서 Google Workspace 부가기능을 만듭니다.
목표
- 환경을 설정합니다.
- Cloud 함수를 만들고 배포합니다.
- 부가기능을 만들고 배포합니다.
- 부가기능을 설치합니다.
기본 요건
Cloud 프로젝트에 결제를 사용 설정해야 합니다. 프로젝트의 결제 상태를 확인하는 방법을 알아보세요.
Cloud SDK가 Cloud 프로젝트로 구성됩니다.
환경 설정
Google Cloud 콘솔에서 Cloud 프로젝트 열기
- Google Cloud 콘솔에서 프로젝트 선택 페이지로 이동합니다.
- 사용할 Google Cloud 프로젝트를 선택합니다. 또는 프로젝트 만들기를 클릭하고 화면에 표시된 안내를 따릅니다. Google Cloud 프로젝트를 만드는 경우 프로젝트에 결제를 사용 설정해야 할 수 있습니다.
OAuth 동의 화면 구성
Google Workspace 부가기능에는 동의 화면 구성이 필요합니다. 부가기능의 OAuth 동의 화면을 구성하면 Google에서 사용자에게 표시할 내용이 정의됩니다.
- Google Cloud 콘솔에서 메뉴 > > 브랜딩으로 이동합니다.
- 이미 를 구성한 경우 브랜딩, 공유 대상, 데이터 액세스에서 다음 OAuth 동의 화면 설정을 구성할 수 있습니다. 아직 구성되지 않음이라는 메시지가 표시되면 시작하기를 클릭합니다.
- 앱 정보의 앱 이름에 앱 이름을 입력합니다.
- 사용자 지원 이메일에서 사용자가 동의에 관해 문의할 수 있는 지원 이메일 주소를 선택합니다.
- 다음을 클릭합니다.
- 시청자층에서 내부를 선택합니다.
- 다음을 클릭합니다.
- 연락처 정보에서 프로젝트 변경사항에 대한 알림을 받을 이메일 주소를 입력합니다.
- 다음을 클릭합니다.
- 완료에서 Google API 서비스 사용자 데이터 정책을 검토하고 동의하는 경우 Google API 서비스: 사용자 데이터 정책에 동의합니다를 선택합니다.
- 계속을 클릭합니다.
- 만들기를 클릭합니다.
- 지금은 범위 추가를 건너뛰어도 됩니다. 향후 Google Workspace 조직 외부에서 사용할 앱을 만들 때는 사용자 유형을 외부로 변경해야 합니다. 그런 다음 앱에 필요한 승인 범위를 추가합니다. 자세한 내용은 전체 OAuth 동의 구성 가이드를 참고하세요.
Cloud 함수 생성 및 배포
Google Cloud 콘솔에서 Cloud Shell 활성화
를 클릭합니다.
Cloud Shell 터미널이 열리고 Google Cloud 콘솔 하단 창에서 세션이 시작됩니다.
승인을 클릭하여 Cloud Shell을 프로비저닝하고 연결합니다.
Cloud Shell 터미널에서 Cloud Functions API, Cloud Build API, Google Workspace 부가기능 API, Compute Engine API를 사용 설정합니다.
gcloud services enable cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ gsuiteaddons.googleapis.com \ compute.googleapis.com
Cloud Shell 창의 툴바에서
편집기 열기를 클릭하여 Cloud Shell 편집기를 시작합니다.
이 기본 제공 코드 편집기는 프로젝트가 빌드 및 배포된 동일한 환경에서 파일을 보고 편집할 수 있는 편의성을 제공합니다.
빈 디렉터리에서 다음 샘플 코드로
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" } } ] } ] } } ] } }; }
같은 디렉터리에서 다음 샘플 코드가 포함된
package.json
파일을 만듭니다.{ "dependencies": { "@google-cloud/functions-framework": "^3.0.0" } }
터미널 열기를 클릭하여 Cloud Shell 터미널로 돌아갑니다.
Compute Engine 기본 서비스 계정에
Cloud Build Service Account
역할(roles/cloudbuild.builds.builder
)을 추가합니다.먼저 서비스 계정 권한을 설정합니다.
export PROJECT_ID=$(gcloud config get project) export SERVICE_ACCOUNT_NAME=$(gcloud compute project-info describe \ --format="value(defaultServiceAccount)")
그런 다음 누락된 서비스 계정 권한을 부여합니다.
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \ --role="roles/cloudbuild.builds.builder"
다음 명령어를 실행하여 함수를 배포합니다.
gcloud functions deploy loadHomePage --runtime nodejs22 --trigger-http
메시지가 표시되면 함수의 인증되지 않은 호출을 허용하지 않도록 지정합니다. 함수가 배포되는 데 몇 분 정도 걸릴 수 있습니다.
부가기능 배포 만들기
부가기능의 서비스 계정 이메일을 찾습니다.
gcloud workspace-add-ons get-authorization
서비스 계정에
cloudfunctions.invoker
역할을 부여합니다. SERVICE_ACCOUNT_EMAIL을 이전 단계의serviceAccountEmail
필드로 바꿉니다.gcloud functions add-iam-policy-binding loadHomePage \ --role roles/cloudfunctions.invoker \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL
배포된 함수의 URL을 가져옵니다. URL을 가져오려면 다음 명령어를 실행하고
httpsTrigger
섹션 아래에서url
필드를 찾습니다.gcloud functions describe loadHomePage
편집기 열기를 클릭하여 Cloud Shell 편집기로 돌아갑니다.
package.json
와 동일한 디렉터리에 다음 샘플 코드가 포함된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": {} } }
Cloud Shell 터미널로 돌아가 배포를 만듭니다.
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 부가기능에 더 많은 기능을 추가하려면 다음을 참고하세요.
- HTTP 엔드포인트를 사용하여 Google Workspace 부가기능 빌드하기
- Codelab: Node.js 및 Cloud Run으로 Google Workspace 부가기능 빌드
- 스마트 칩을 사용한 링크 미리보기