Google Sheets는 실시간 공동작업을 지원하고 데이터를 시각화, 처리, 소통하는 도구를 제공하는 클라우드 기반의 스프레드시트 솔루션입니다.
이 튜토리얼에서는 Sheets에서 워크플로를 트리거하는 방법을 보여줍니다.
목표
이 튜토리얼에서는 다음 단계를 진행합니다.
- 클라우드 기반 설문지 및 설문조사 솔루션인 Google Forms를 사용하여 가상 머신(VM) 인스턴스 생성 요청을 제출할 수 있는 양식을 만듭니다.
- 응답을 수집하고 저장하려면 Google Sheets 스프레드시트를 양식에 연결합니다.
- Google Workspace 제품을 프로그래밍 방식으로 만들고, 읽고, 수정할 수 있는 클라우드 기반 자바스크립트 플랫폼인 Google Apps Script를 사용하여 스프레드시트 업데이트를 통해 요청이 승인될 때마다 워크플로를 트리거합니다.
- Compute Engine API 커넥터를 호출하고 양식을 통해 수집된 사양에 따라 Compute Engine VM 인스턴스를 만드는 워크플로를 배포합니다. 커넥터는 다른 Google Cloud API 호출을 단순화합니다. 워크플로 커넥터 자세히 알아보기
- 전체 프로세스를 테스트하고 VM 인스턴스가 예상한 대로 생성되었는지 확인합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 튜토리얼에서는 Google Workspace도 사용합니다. Google의 무료 소비자 앱에 포함되지 않은 비즈니스급 서비스는 비용이 청구됩니다.
시작하기 전에
Google Cloud 콘솔에서 또는 터미널이나 Cloud Shell에서 Google Cloud CLI를 사용하여 다음 명령어의 일부를 실행할 수 있습니다.
조직에서 정의한 보안 제약조건으로 인해 다음 단계를 완료하지 못할 수 있습니다. 문제 해결 정보는 제한된 Google Cloud 환경에서 애플리케이션 개발을 참조하세요.
콘솔
Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 만들거나 선택합니다.
Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
Compute Engine 및 Workflows API를 사용 설정합니다.
테스트 목적으로 이 튜토리얼의 워크플로와 연결할 것이므로 Compute Engine 기본 서비스 계정을 기록해 두세요. Compute Engine API가 사용 설정된 새 프로젝트에는 IAM 기본 편집자 역할 및 다음 이메일 형식으로 생성된 이 서비스 계정이 포함됩니다.
PROJECT_NUMBER-compute@developer.gserviceaccount.com
프로젝트 번호는 Google Cloud 콘솔의 시작 페이지에서 찾을 수 있습니다.
프로덕션 환경의 경우 새 서비스 계정을 만들고 해당 계정에 필요한 최소한의 권한을 포함하고 최소 권한 원칙을 따르는 하나 이상의 IAM 역할을 부여하는 것을 강력하게 추천합니다.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
Compute Engine 및 Workflows API를 사용 설정합니다.
gcloud services enable \ compute.googleapis.com \ workflows.googleapis.com
테스트 목적으로 이 튜토리얼의 워크플로와 연결할 것이므로 Compute Engine 기본 ㅅ비스 계정을 기록해 두세요. Compute Engine API가 사용 설정된 새 프로젝트에는 IAM 기본 편집자 역할 및 다음 이메일 형식으로 생성된 이 서비스 계정이 포함됩니다.
PROJECT_NUMBER-compute@developer.gserviceaccount.com
다음과 같이 프로젝트 번호를 검색할 수 있습니다.
gcloud projects describe PROJECT_ID
프로덕션 환경의 경우 새 서비스 계정을 만들고 해당 계정에 필요한 최소한의 권한을 포함하고 최소 권한 원칙을 따르는 하나 이상의 IAM 역할을 부여하는 것을 강력하게 추천합니다.
VM 인스턴스 요청 양식 만들기
Compute Engine 가상 머신(VM) 인스턴스 생성 요청을 제출하는 데 사용할 수 있는 양식을 만듭니다. 기본적으로 Google Forms를 통해 양식을 만들면 Google Drive에 저장됩니다.
- forms.google.com으로 이동합니다.
- '내용 없음'
을 클릭합니다.
새 양식이 열립니다.
- 필수 섹션 5개가 포함된 양식을 만듭니다. 양식은 다음과 비슷하게 표시되어야 합니다.
샘플 양식 보기
머신 이름 단답형 텍스트
영역 드롭다운:
- us-central1-a
- us-central1-b
- us-central1-c
- us-central1-f
유형 드롭다운:
- e2-micro
- e2-small
- e2-medium
- e2-standard-2
- e2-standard-4
디스크 크기(GB) 단답형 텍스트
운영체제 드롭다운:
- debian-10
- centos-stream-9
- cos-93-lts
- cos-97-lts
- 양식을 작성할 사람의 이메일 주소를 기록하도록 이메일 수집을 사용 설정합니다.
- 설정을 클릭합니다.
- 응답 섹션을 펼칩니다.
- 이메일 주소 수집 전환 버튼을 클릭합니다.
양식에 스프레드시트 연결
양식을 만든 후 스프레드시트를 연결하여 스프레드시트에 양식 응답을 저장할 수 있게 합니다. 스프레드시트는 드라이브에 저장됩니다.
- 양식에서 양식을 엽니다.
- 응답을 클릭합니다.
- Sheets에 연결을 클릭합니다.
- 응답 대상 선택 대화상자에서 새 스프레드시트 만들기를 선택합니다.
만들기를 클릭합니다.
연결된 스프레드시트가 열립니다.
H 열에서 승인됨? 제목을 추가합니다.
H 열의 첫 번째 행에 커서를 놓고 삽입 > 체크박스를 선택합니다.
스프레드시트는 다음과 유사하게 표시되어야 합니다.
시트가 응답으로 업데이트될 때마다 해당 응답의 행에 체크박스도 표시됩니다.
Apps Script를 사용하여 Google Sheets 확장
Apps Script를 사용하면 프로그래매틱 방식으로 Sheets를 만들고 읽고 수정할 수 있습니다. Sheets용으로 설계된 대부분의 스크립트는 배열을 조작하여 스프레드시트의 셀, 행, 열과 상호작용합니다. Sheets에 Apps Script 사용에 대한 안내는 커스텀 함수 빠른 시작을 참조하세요.
다음과 같이 Sheets에서 Apps Script 프로젝트를 만듭니다.
- Sheets 스프레드시트를 엽니다.
- 확장 프로그램 > Apps Script를 선택합니다.
- 스크립트 편집기에서 제목 없음 프로젝트를 클릭합니다.
- 프로젝트 이름을 지정하고 이름 바꾸기를 클릭합니다.
이제 스크립트는 스프레드시트에 바인딩되어 사용자 인터페이스를 변경하거나 스프레드시트가 열릴 때 응답하는 스크립트 기능을 제공합니다.
스크립트 프로젝트는 Apps Script 파일 및 리소스 컬렉션을 나타냅니다. 스크립트 프로젝트의 코드 파일에는
.gs
확장 프로그램이 있습니다.Apps Script를 사용하면 기본 제공 함수처럼 Sheets에서 사용할 수 있는 커스텀 함수를 작성할 수 있습니다. 커스텀 함수는 표준 JavaScript를 사용하여 생성됩니다. 다음과 같이 함수를 만듭니다.
- Apps Script 프로젝트를 엽니다.
- 편집기 를 클릭합니다.
- 스크립트 파일은
Code.gs
라는 프로젝트 파일로 나타납니다. 파일을 수정하기 위해 선택합니다. 스크립트 편집기의 모든 코드를 스프레드시트의 데이터를 읽고 워크플로 실행에 입력으로 전달하는 다음 코드로 바꿉니다.
your-project-id
를 Google Cloud 프로젝트 ID로 바꿉니다.프로젝트 ID는 Google Cloud 콘솔의 시작 페이지에서 찾을 수 있습니다.
저장
를 클릭합니다.
Apps Script 설치 가능한 트리거를 사용하면 스프레드시트를 열거나 수정할 때와 같이 특정 조건이 충족될 때 스크립트 프로젝트에서 지정된 함수를 실행할 수 있습니다. 다음과 같이 트리거를 만듭니다.
- Apps Script 프로젝트를 엽니다.
- 트리거 을 클릭합니다.
- 트리거 추가를 클릭합니다.
- YOUR_PROJECT_NAME의 트리거 추가 대화상자에서 트리거를 구성합니다.
- 실행할 함수 선택 목록에서 handleEdit을 선택합니다.
- 실행할 배포 선택 목록에서 Head를 선택합니다.
- 이벤트 소스 선택 목록에서 스프레드시트에서를 선택합니다.
- 이벤트 유형 선택 목록에서 수정 시를 선택합니다.
- 실패 알림 설정 목록에서 매일 알림을 선택합니다.
- 저장을 클릭합니다.
Google 계정을 선택하라는 메시지가 표시되면 적절한 계정을 선택한 다음 허용을 클릭합니다.
이렇게 하면 Apps Script 프로젝트에서 Sheets 스프레드시트를 보고, 수정하고, 만들고, 삭제하고, 외부 서비스에 연결할 수 있습니다.
Apps Script 프로젝트 매니페스트 파일은 Apps Script가 스크립트를 성공적으로 실행하기 위해 필요한 기본 프로젝트 정보를 지정하는 JSON 파일입니다. Apps Script 편집기는 기본적으로 Apps Script 프로젝트 설정을 보호하기 위해 매니페스트 파일을 숨깁니다. 매니페스트 파일을 수정합니다.
- Apps Script 프로젝트를 엽니다.
- 프로젝트 설정 를 클릭합니다.
- 편집기에 'appsscript.json' 매니페스트 파일 표시 체크박스를 선택합니다.
- 편집기 를 클릭합니다.
- 매니페스트 파일은
appsscript.json
라는 프로젝트 파일로 나타납니다. 파일을 수정하기 위해 선택합니다. oauthScopes
필드는 문자열 배열을 지정합니다. 프로젝트에 사용되는 승인 범위를 설정하기 위해 지원하려는 범위의 배열을 추가합니다. 예를 들면 다음과 같습니다.{ "timeZone": "America/Toronto", "dependencies": { }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/spreadsheets" ] }
이렇게 하면 다음에 대한 명시적 범위가 설정됩니다.
- 외부 서비스에 연결
- Google Cloud 데이터 확인, 수정, 구성, 삭제 및 Google 계정 이메일 주소 확인
- 모든 Sheets 스프레드시트 확인, 수정, 생성, 삭제
저장
를 클릭합니다.
VM 인스턴스를 만드는 워크플로 배포
VM 인스턴스 생성 요청이 승인되었을 때 트리거되는 워크플로를 배포합니다. 이 워크플로는 양식을 통해 수집된 사양을 기반으로 Compute Engine VM 인스턴스를 만들도록 Compute Engine API 커넥터를 호출합니다.
콘솔
Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.
만들기를 클릭합니다.
새 워크플로의 이름
create-vm-from-form
를 입력합니다.리전 목록에서 us-central1(아이오와)을 선택합니다.
서비스 계정에 대해 Compute Engine 기본 서비스 계정(
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)을 선택합니다.다음을 클릭합니다.
워크플로 편집기에서 다음 워크플로 정의를 입력합니다.
배포를 클릭합니다.
gcloud
워크플로의 소스 코드 파일을 만듭니다.
touch create-vm-from-form.yaml
텍스트 편집기에서 다음 워크플로를 소스 코드 파일에 복사합니다.
다음 명령어를 입력하여 워크플로를 배포합니다.
gcloud workflows deploy create-vm-from-form \ --source=create-vm-from-form.yaml \ --location=us-central1 \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_NUMBER
를 Google Cloud 프로젝트 번호로 바꿉니다. 다음과 같이 프로젝트 번호를 검색할 수 있습니다.gcloud projects describe PROJECT_ID
엔드 투 엔드 흐름 테스트
모두 예상한 대로 작동하는지 확인하기 위해 전체 프로세스를 실행해 봅니다.
양식을 자신에게 전송하고 질문에 적절하게 답변합니다.
VM 인스턴스를 만들기 위해 사용하는 사양이 유효한지 확인합니다. 그렇지 않으면 워크플로 실행이 실패합니다. 자세한 내용은 Compute Engine 범용 머신 계열을 참조하세요.
응답을 제출하려면 제출을 클릭합니다.
양식에서 양식을 엽니다.
응답을 클릭합니다.
Sheets에서 보기를 클릭합니다.
연결된 스프레드시트가 열립니다.
응답 행에서 승인 여부 체크박스를 선택합니다.
Apps Script 프로젝트를 엽니다.
실행
를 클릭합니다.트리거가 실행되고
Completed
상태로 나열되어야 합니다.create-vm-from-form
워크플로가 성공적으로 완료되었는지 확인합니다.콘솔
Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.
워크플로 페이지에서 create-vm-from-form 워크플로를 클릭하여 세부정보 페이지로 이동합니다.
워크플로 세부정보 페이지에서 특정 실행의 세부정보를 검색하려면 해당하는 실행 ID를 클릭합니다.
실행 상태가 성공이어야 입력 창에 요청한 VM 사양이 표시되어야 합니다.
gcloud
워크플로의 실행 시도 목록을 검색합니다.
gcloud workflows executions list create-vm-from-form
결과는 다음과 비슷하게 표시됩니다.
NAME: projects/918619793306/locations/us-central1/workflows/create-vm-from-form/executions/d8947ecb-9ccb-4ea1-ba10-e5c10414e3be STATE: SUCCEEDED START_TIME: 2023-01-24T15:07:40.404741791Z END_TIME: 2023-01-24T15:07:55.649373625Z
새 VM이 예상한 대로 생성되었는지 확인합니다.
콘솔
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
VM 인스턴스가 실행 중임을 나타내는 상태로 나열됩니다.
gcloud
프로젝트에 대해 모든 영역의 모든 VM에 대한 집계 목록을 검색합니다.
gcloud compute instances list
VM 인스턴스가 실행 중임을 나타내는 상태로 나열됩니다.
gcloud compute instances list
명령어에 대한 자세한 내용은 참조 페이지를 확인하세요.
삭제
이 튜토리얼용으로 새 프로젝트를 만든 경우 이 프로젝트를 삭제합니다. 기존 프로젝트를 사용한 경우 이 튜토리얼에 추가된 변경사항은 제외하고 보존하려면 튜토리얼용으로 만든 리소스를 삭제합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.
프로젝트를 삭제하는 방법은 다음과 같습니다.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.