Memicu alur kerja dari Google Spreadsheet


Google Spreadsheet adalah solusi spreadsheet berbasis cloud yang mendukung kolaborasi real-time dan menyediakan alat untuk memvisualisasikan, memproses, dan mengomunikasikan data.

Tutorial ini menunjukkan cara memicu Workflows dari Spreadsheet.

Tujuan

Dalam tutorial ini, Anda akan:

  1. Gunakan Google Formulir, sebuah solusi survei dan kuesioner berbasis cloud, untuk membuat formulir yang dapat mengirimkan permintaan membuat instance virtual machine (VM).
  2. Tautkan spreadsheet Google Spreadsheet ke formulir untuk mengumpulkan dan menyimpan respons apa pun.
  3. Gunakan Google Apps Script, platform JavaScript berbasis cloud yang memungkinkan Anda membuat, membaca, dan mengedit produk Google Workspace secara terprogram, untuk memicu alur kerja setiap kali permintaan disetujui melalui pembaruan pada spreadsheet.
  4. Deploy alur kerja yang memanggil konektor Compute Engine API dan membuat instance VM Compute Engine berdasarkan spesifikasi yang dikumpulkan melalui formulir. Konektor menyederhanakan panggilan Google Cloud API lainnya. Pelajari lebih lanjut konektor Workflows.
  5. Uji seluruh proses dan pastikan bahwa instance VM dibuat seperti yang diharapkan.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Tutorial ini juga menggunakan Google Workspace. Layanan tingkat bisnis yang tidak disertakan dengan aplikasi konsumen gratis Google dapat ditagih.

Sebelum memulai

Anda dapat menjalankan beberapa perintah berikut di Konsol Google Cloud, atau dengan menggunakan Google Cloud CLI di terminal atau Cloud Shell.

Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.

Konsol

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.

  3. Aktifkan Compute Engine dan Workflows API.

    Mengaktifkan API

  4. Project baru yang telah mengaktifkan Compute Engine API memiliki akun layanan default Compute Engine yang dibuat dengan peran Editor dasar Identity and Access Management (IAM), dan dengan format email berikut:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Anda dapat menemukan nomor project di halaman Welcome pada Konsol Google Cloud.

    Catat akun layanan ini karena Anda akan mengaitkannya dengan alur kerja dalam tutorial ini untuk tujuan pengujian.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.

  3. Aktifkan Compute Engine dan Workflows API.

    gcloud services enable \
        compute.googleapis.com \
        workflows.googleapis.com
    
  4. Project baru yang telah mengaktifkan Compute Engine API memiliki akun layanan default Compute Engine yang dibuat dengan peran Editor dasar IAM, dan dengan format email berikut:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Anda dapat mengambil nomor project:

    gcloud projects describe PROJECT_ID
    

    Catat akun layanan ini karena Anda akan mengaitkannya dengan alur kerja dalam tutorial ini untuk tujuan pengujian.

Buat formulir untuk meminta instance VM

Buat formulir yang dapat digunakan untuk mengirim permintaan guna membuat instance virtual machine (VM) Compute Engine. Secara default, saat Anda membuat formulir melalui Google Formulir, formulir tersebut akan disimpan di Google Drive.

  1. Buka forms.google.com.
  2. Klik Kosong Plus.

    Formulir baru akan terbuka.

  3. Buat formulir dengan lima bagian yang wajib diisi. Formulir akan terlihat seperti berikut:

    Lihat contoh formulir

    Contoh formulir untuk meminta pembuatan Virtual Machine Google Cloud
    Nama perangkat

    Teks jawaban singkat

    Zone

    {i>Dropdown<i}:

    1. us-central1-a
    2. us-central1-b
    3. us-central1-c
    4. us-central1-f
    Type

    {i>Dropdown<i}:

    1. e2-micro
    2. e2-small
    3. e2-medium
    4. e2-standard-2
    5. e2-standard-4
    Ukuran disk (GB)

    Teks jawaban singkat

    Sistem operasi

    {i>Dropdown<i}:

    1. debian-10
    2. centos-stream-9
    3. cos-93-lts
    4. cos-97-lts
  4. Aktifkan pengumpulan email untuk mencatat alamat email orang yang mengisi formulir Anda:
    1. Klik Setelan.
    2. Luaskan bagian Responses.
    3. Klik tombol Kumpulkan alamat email.

Setelah Anda membuat formulir, tautkan spreadsheet ke formulir tersebut agar Anda dapat menyimpan respons formulir ke dalam spreadsheet tersebut. Spreadsheet akan disimpan di Drive.

  1. Buka formulir Anda di Formulir.
  2. Klik Tanggapan.
  3. Klik Tautkan ke Spreadsheet.
  4. Pada dialog Select destination for response, pilih Create a new spreadsheet.
  5. Klik Create.

    Spreadsheet yang ditautkan akan terbuka.

  6. Di kolom H, tambahkan judul Approved?.

  7. Tempatkan kursor Anda di baris pertama kolom H, lalu pilih Insert > Checkbox.

    {i>Spreadsheet <i}akan tampak seperti berikut ini:

    Contoh spreadsheet tertaut untuk mengumpulkan permintaan

    Setiap kali sheet diperbarui dengan respons, kotak centang juga akan muncul di baris untuk respons tersebut.

Memperluas Google Spreadsheet menggunakan Apps Script

Apps Script memungkinkan Anda membuat, membaca, dan mengedit Spreadsheet secara terprogram. Sebagian besar skrip yang dirancang untuk Spreadsheet memanipulasi array untuk berinteraksi dengan sel, baris, dan kolom dalam spreadsheet. Untuk pengantar penggunaan Apps Script dengan Spreadsheet, lihat Panduan memulai fungsi kustom.

  1. Membuat project Apps Script dari Spreadsheet:

    1. Buka spreadsheet Spreadsheet Anda.
    2. Pilih Ekstensi > Apps Script.
    3. Di editor skrip, klik Project tanpa judul.
    4. Beri nama project Anda, lalu klik Ganti nama.

    Skrip Anda kini terikat dengan spreadsheet, sehingga skrip dapat mengubah antarmuka pengguna atau merespons saat spreadsheet dibuka.

    Project skrip mewakili kumpulan file dan resource Apps Script. File kode dalam project skrip memiliki ekstensi .gs.

  2. Anda dapat menggunakan Apps Script untuk menulis fungsi kustom yang dapat digunakan di Spreadsheet seperti fungsi bawaan. Fungsi kustom dibuat menggunakan JavaScript standar. Buat fungsi:

    1. Buka project Apps Script.
    2. Klik Editor .
    3. File skrip akan muncul sebagai file project bernama Code.gs. Untuk mengedit {i>file<i}, pilih file tersebut.
    4. Ganti kode apa pun di editor skrip dengan kode berikut yang membaca data di spreadsheet Anda dan meneruskannya sebagai input untuk eksekusi alur kerja:

      const PROJECT_ID = "your-project-id";
      const REGION = "us-central1";
      const WORKFLOW = "create-vm-from-form";
      
      function handleEdit(e) {
        var range = e.range.getA1Notation();
        var sheet = e.source;
      
        if (range.length > 1 && range[0] === 'H') {
          if (e.value == "TRUE") {
            Logger.log("Approved checkbox: true");
      
            var row = range.slice(1)
            var email = sheet.getRange('B' + row).getCell(1, 1).getValue()
            var vmName = sheet.getRange('c' + row).getCell(1, 1).getValue()
            var zone = sheet.getRange('D' + row).getCell(1, 1).getValue()
            var machineType = sheet.getRange('E' + row).getCell(1, 1).getValue()
            var diskSize = sheet.getRange('F' + row).getCell(1, 1).getValue()
            var imageFamily = sheet.getRange('G' + row).getCell(1, 1).getValue()
            var imageProject = imageFamily.substring(0, imageFamily.indexOf('-')) + "-cloud"
      
            const executionPayload = {
              "argument": "{\"diskSize\": \"" + diskSize + "\", \"email\": \"" + email + "\", \"imageFamily\": \"" + imageFamily + "\", \"imageProject\": \"" + imageProject + "\", \"machineType\": \"" + machineType + "\", \"vmName\": \"" + vmName + "\", \"zone\": \"" + zone +  "\"}"
            };
      
            approve(executionPayload);
          }
          else {
            Logger.log("Approved checkbox: false");
          }
        }
      }
      
      function approve(executionPayload) {
        const headers = {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        };
      
        const params = {
          "method": 'post',
          "contentType": 'application/json',
          "headers": headers,
          "payload": JSON.stringify(executionPayload)
        };
      
        const url = "https://workflowexecutions.googleapis.com/v1/projects/" + PROJECT_ID + "/locations/" + REGION + "/workflows/" + WORKFLOW + "/executions";
      
        Logger.log("Workflow execution request to " + url);
        var response = UrlFetchApp.fetch(url, params);
        Logger.log(response);
      }
    5. Ganti your-project-id dengan ID project Google Cloud Anda.

      Anda dapat menemukan project ID di halaman Welcome pada Konsol Google Cloud.

    6. Klik Simpan .

  3. Pemicu yang dapat diinstal Apps Script memungkinkan project skrip mengeksekusi fungsi yang ditentukan saat kondisi tertentu terpenuhi, seperti saat spreadsheet dibuka atau diedit. Buat pemicu:

    1. Buka project Apps Script.
    2. Klik Pemicu .
    3. Klik Tambahkan Pemicu.
    4. Pada dialog Add Trigger for Your_PROJECT_NAME, konfigurasikan pemicu:
      1. Di daftar Choose mana function to run, pilih handleEdit.
      2. Dalam daftar Choose which deployment should run, pilih Head.
      3. Dalam daftar Pilih sumber peristiwa, pilih Dari spreadsheet.
      4. Di daftar Pilih jenis peristiwa, pilih Saat diedit.
      5. Dalam daftar Setelan notifikasi kegagalan, pilih Beri tahu saya setiap hari.
    5. Klik Save.
    6. Jika Anda menerima perintah untuk memilih Akun Google, pilih akun yang sesuai, lalu klik Izinkan.

      Hal ini memungkinkan project Apps Script Anda untuk melihat, mengedit, membuat, dan menghapus spreadsheet Spreadsheet Anda; serta terhubung ke layanan eksternal.

  4. File manifes project Apps Script adalah file JSON yang menentukan informasi project dasar yang diperlukan Apps Script agar dapat menjalankan skrip dengan sukses. Perlu diperhatikan bahwa editor Apps Script menyembunyikan file manifes secara default untuk melindungi setelan project Apps Script Anda. Edit file manifes:

    1. Buka project Apps Script.
    2. Klik Setelan Project .
    3. Pilih kotak centang Tampilkan file manifes "appsscript.json" dalam editor.
    4. Klik Editor .
    5. File manifes akan muncul sebagai file project bernama appsscript.json. Untuk mengedit file, pilih file tersebut.
    6. Kolom oauthScopes menentukan array string. Untuk menetapkan cakupan otorisasi yang digunakan project Anda, tambahkan array dengan cakupan yang ingin didukung. Contoh:

      {
        "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"
        ]
      }

      Tindakan ini menetapkan cakupan eksplisit ke:

      • Menghubungkan ke layanan eksternal
      • Melihat, mengedit, mengonfigurasi, dan menghapus data Google Cloud Anda serta melihat alamat email untuk Akun Google Anda
      • Melihat, mengedit, membuat, dan menghapus semua spreadsheet Spreadsheet Anda
    7. Klik Simpan .

Men-deploy alur kerja yang membuat instance VM

Men-deploy alur kerja yang dipicu saat permintaan untuk membuat instance VM disetujui. Alur kerja memanggil konektor Compute Engine API untuk membuat instance VM Compute Engine berdasarkan spesifikasi yang dikumpulkan melalui formulir.

Konsol

  1. Di konsol Google Cloud, buka halaman Workflows:

    Buka Workflows

  2. Klik Buat.

  3. Masukkan nama untuk alur kerja baru: create-vm-from-form.

  4. Pada daftar Region, pilih us-central1 (Iowa).

  5. Untuk Service account, pilih akun layanan default Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  6. Klik Next.

  7. Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:

    main:
       params: [input]
       steps:
       - init:
           assign:
                - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - zone: ${input.zone}
                - machineType: ${input.machineType}
                - diskSize: ${input.diskSize}
                - imageProject: ${input.imageProject}
                - imageFamily: ${input.imageFamily}
                - vmName: ${input.vmName}
                - email: ${input.email}
       - createResource:
           call: googleapis.compute.v1.instances.insert
           args:
               project: ${projectId}
               zone: ${zone}
               body:
                   name: ${vmName}
                   machineType: ${"projects/" + projectId + "/zones/" + zone + "/machineTypes/" + machineType}
                   disks:
                    - initializeParams:
                        diskSizeGb: ${diskSize}
                        sourceImage: ${"projects/" + imageProject + "/global/images/family/" + imageFamily}
                      type: PERSISTENT
                      boot: true
                      autoDelete: true
                   networkInterfaces:
                    - network: "global/networks/default"
           result: insertResult
       - retStep:
           return: ${insertResult}
  8. Klik Deploy.

gcloud

  1. Buat file kode sumber untuk alur kerja Anda:

    touch create-vm-from-form.yaml
    
  2. Di editor teks, salin alur kerja berikut ke file kode sumber Anda:

    main:
       params: [input]
       steps:
       - init:
           assign:
                - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - zone: ${input.zone}
                - machineType: ${input.machineType}
                - diskSize: ${input.diskSize}
                - imageProject: ${input.imageProject}
                - imageFamily: ${input.imageFamily}
                - vmName: ${input.vmName}
                - email: ${input.email}
       - createResource:
           call: googleapis.compute.v1.instances.insert
           args:
               project: ${projectId}
               zone: ${zone}
               body:
                   name: ${vmName}
                   machineType: ${"projects/" + projectId + "/zones/" + zone + "/machineTypes/" + machineType}
                   disks:
                    - initializeParams:
                        diskSizeGb: ${diskSize}
                        sourceImage: ${"projects/" + imageProject + "/global/images/family/" + imageFamily}
                      type: PERSISTENT
                      boot: true
                      autoDelete: true
                   networkInterfaces:
                    - network: "global/networks/default"
           result: insertResult
       - retStep:
           return: ${insertResult}
  3. Deploy alur kerja dengan memasukkan perintah berikut:

    gcloud workflows deploy create-vm-from-form \
        --source=create-vm-from-form.yaml \
        --location=us-central1 \
        --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Ganti PROJECT_NUMBER dengan nomor project Google Cloud Anda. Anda dapat mengambil nomor project:

    gcloud projects describe PROJECT_ID
    

Menguji alur end-to-end

Untuk memastikan bahwa semuanya berfungsi seperti yang diharapkan, coba jalankan seluruh proses.

  1. Kirimkan formulir Anda ke diri sendiri dan jawab pertanyaan dengan tepat.

    Pastikan spesifikasi yang Anda gunakan untuk membuat instance VM valid. Jika tidak, eksekusi alur kerja Anda akan gagal. Untuk informasi selengkapnya, lihat Kelompok mesin tujuan umum Compute Engine.

  2. Untuk mengirimkan respons, klik Kirim.

  3. Buka formulir Anda di Formulir.

  4. Klik Tanggapan.

  5. Klik Lihat di Spreadsheet.

    Spreadsheet yang tertaut akan terbuka.

  6. Di baris untuk respons Anda, centang kotak Disetujui?.

  7. Buka project Apps Script.

  8. Klik Executions .

    Pemicu Anda harus dijalankan dan dicantumkan dengan status Completed.

  9. Konfirmasi bahwa alur kerja create-vm-from-form berhasil diselesaikan:

    Konsol

    1. Di konsol Google Cloud, buka halaman Workflows.

      Buka Workflows

    2. Di halaman Workflows, klik alur kerja create-vm-from-form untuk membuka halaman detailnya.

    3. Di halaman Workflow details, untuk mengambil detail eksekusi tertentu, klik ID eksekusi yang sesuai.

      Execution state harus Succeeded dan, di panel Input, Anda akan melihat spesifikasi VM yang Anda minta.

    gcloud

    Ambil daftar upaya eksekusi alur kerja Anda:

    gcloud workflows executions list create-vm-from-form

    Hasilnya akan terlihat seperti berikut:

    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
  10. Pastikan VM baru telah dibuat seperti yang diharapkan:

    Konsol

    Di konsol Google Cloud, buka halaman Instance VM.

    Buka instance VM

    Instance VM Anda akan dicantumkan dengan status yang menunjukkan bahwa instance tersebut sedang berjalan.

    gcloud

    Ambil daftar gabungan semua VM di semua zona untuk sebuah project:

    gcloud compute instances list

    Instance VM Anda akan dicantumkan dengan status yang menunjukkan bahwa instance tersebut sedang berjalan.

    Untuk informasi selengkapnya tentang perintah gcloud compute instances list, lihat halaman referensinya.

Pembersihan

Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource yang dibuat dalam tutorial ini

  1. Menghapus file di Drive.
  2. Menghapus instance VM Compute Engine.
  3. Menghapus alur kerja.

Langkah selanjutnya