Attivare un flusso di lavoro da Fogli Google


Fogli Google è una soluzione di fogli di lavoro basata su cloud che supporta la collaborazione in tempo reale e fornisce strumenti per visualizzare, elaborare e comunicare i dati.

Questo tutorial mostra come attivare i flussi di lavoro da Sheets.

Obiettivi

In questo tutorial, imparerai a:

  1. Utilizza Moduli Google, una soluzione per questionari e sondaggi basata su cloud, per creare un modulo che possa inviare richieste per la creazione di istanze di macchine virtuali (VM).
  2. Collega un foglio di lavoro di Fogli Google al modulo per raccogliere e salvare le risposte.
  3. Utilizza Google Apps Script, un basata su cloud che consente di creare, leggere, e modificare i prodotti Google Workspace, per attivare un flusso di lavoro ogni volta che viene inviata viene approvata tramite un aggiornamento del foglio di lavoro.
  4. Esegui il deployment di un flusso di lavoro che chiama il connettore API Compute Engine e crea un'istanza VM Compute Engine in base alle specifiche raccolte tramite il modulo. I connettori semplificano le chiamate di altri servizi Google Cloud su quelle di livello inferiore. Scopri di più sui connettori di Workflows.
  5. Testa l'intera procedura e verifica che un'istanza VM venga creata come previsto.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Il tutorial utilizza anche Google Workspace. I servizi di livello professionale che non sono inclusi nelle app per utenti finali gratuite di Google sono fatturabili.

Prima di iniziare

Puoi eseguire alcuni dei seguenti comandi nella console Google Cloud o utilizzando l'interfaccia a riga di comando Google Cloud nel terminale o in Cloud Shell.

I vincoli di sicurezza definiti dalla tua organizzazione potrebbero impedirti di completare i passaggi seguenti. Per informazioni sulla risoluzione dei problemi, vedi Sviluppare applicazioni in un ambiente Google Cloud vincolato.

Console

  1. Nella pagina del selettore progetti della console Google Cloud, seleziona oppure creare un progetto Google Cloud.

    Vai al selettore dei progetti

  2. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come verifica se la fatturazione è abilitata su un progetto.

  3. Abilita le API Compute Engine e Workflows.

    Abilita le API

  4. Prendi nota Account di servizio predefinito Compute Engine come lo assocerai al flusso di lavoro di questo tutorial per i test. scopi. Nuovi progetti che hanno abilitato l'API Compute Engine creare questo account di servizio con IAM di base Ruolo Editor e con il seguente formato email:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Puoi trovare il numero del progetto nella pagina Ti diamo il benvenuto della console Google Cloud.

    Per gli ambienti di produzione, ti consigliamo vivamente di creare un nuovo account di servizio e di assegnargli uno o più ruoli IAM contenenti le autorizzazioni minime richieste e di seguire il principio del privilegio minimo.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come controllare se la fatturazione è attivata in un progetto.

  3. Abilita le API Compute Engine e Workflows.

    gcloud services enable \
        compute.googleapis.com \
        workflows.googleapis.com
  4. Prendi nota Account di servizio predefinito Compute Engine come lo assocerai al flusso di lavoro di questo tutorial per i test. scopi. Nuovi progetti che hanno abilitato l'API Compute Engine creare questo account di servizio con IAM di base Ruolo Editor e con il seguente formato email:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Puoi recuperare il numero di progetto:

    gcloud projects describe PROJECT_ID

    Per gli ambienti di produzione, consigliamo vivamente creando un nuovo account di servizio e assegnandogli uno o più ruoli IAM contenenti autorizzazioni minime richieste e seguono il principio della privilegio minimo.

Crea un modulo per richiedere le istanze VM

Crea un modulo da utilizzare per inviare una richiesta di creazione di un un'istanza di macchina virtuale (VM) Compute Engine. Per impostazione predefinita, quando crei un modulo tramite Moduli Google, questo viene salvato su Google Drive.

  1. Vai alla pagina forms.google.com.
  2. Fai clic su Vuoto Plus.

    Si apre un nuovo modulo.

  3. Crea un modulo con cinque sezioni obbligatorie. Il modulo dovrebbe avere un aspetto simile a quanto segue:

    Visualizza un modulo di esempio

    Esempio di modulo per richiedere la creazione di una macchina virtuale Google Cloud
    Nome della macchina

    Testo risposta breve

    Zona

    Menu a discesa:

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

    Elenco a discesa:

    1. e2-micro
    2. e2-small
    3. e2-medium
    4. e2-standard-2
    5. e2-standard-4
    Dimensione disco (GB)

    Testo risposta breve

    Sistema operativo

    Elenco a discesa:

    1. debian-10
    2. Centos-stream-9
    3. cos-93-lts
    4. cos-97-lts
  4. Attiva la raccolta di email per registrare gli indirizzi email delle persone che compilano nel modulo:
    1. Fai clic su Impostazioni.
    2. Espandi la sezione Risposte.
    3. Fai clic sul pulsante di attivazione/disattivazione Raccogli indirizzi email.

Dopo aver creato un modulo, collega un foglio di lavoro in modo da poter salvare le risposte al modulo al suo interno. Il foglio di lavoro viene salvato in Drive.

  1. Apri il modulo in Moduli.
  2. Fai clic su Risposte.
  3. Fai clic su Collega a Fogli.
  4. Nella finestra di dialogo Seleziona la destinazione per le risposte, seleziona Crea un nuovo foglio di lavoro.
  5. Fai clic su Crea.

    Si apre il foglio di lavoro collegato.

  6. Nella colonna H, aggiungi un'intestazione Approvato?.

  7. Posiziona il cursore nella prima riga della colonna H e seleziona Inserisci > Casella di controllo.

    Il foglio di lavoro dovrebbe avere il seguente aspetto:

    Esempio di foglio di lavoro collegato per raccogliere le richieste

    Ogni volta che il foglio viene aggiornato con una risposta, la casella di controllo viene visualizzata anche nella riga corrispondente.

Estendi Fogli Google con Apps Script

Apps Script ti consente di creare, leggere e modificare a livello di programmazione Google. La maggior parte degli script progettati per Fogli manipola gli array per interagire con le celle, le righe e le colonne di un foglio di lavoro. Per un all'utilizzo di Apps Script con Fogli, vedi la guida rapida alle funzioni personalizzate.

  1. Crea un progetto Apps Script da Fogli:

    1. Apri il foglio di lavoro di Fogli.
    2. Seleziona Estensioni > Apps Script.
    3. Nell'editor di script, fai clic su Progetto senza titolo.
    4. Assegna un nome al progetto e fai clic su Rinomina.

    Lo script è ora associato al foglio di lavoro. che consentono allo script di modificare l'interfaccia utente o e rispondere quando il foglio di lavoro è aperto.

    Un progetto di script rappresenta una raccolta di Apps Script file e risorse. I file di codice in un progetto di script hanno un'estensione .gs.

  2. Puoi utilizzare Apps Script per scrivere funzioni personalizzate che puoi utilizzare in Fogli come una funzione integrata. Le funzioni personalizzate sono vengono create utilizzando JavaScript standard. Crea una funzione:

    1. Apri il progetto Apps Script.
    2. Fai clic su Editor .
    3. Un file di script viene visualizzato come file di progetto denominato Code.gs. Per modificare il file, selezionatelo.
    4. Sostituisci qualsiasi codice nell'editor di script con il seguente codice che legge i dati nel foglio di lavoro e li trasmette come input a un flusso di lavoro esecuzione:

      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. Sostituisci your-project-id con l'ID del tuo progetto Google Cloud.

      Puoi trovare l'ID progetto nella Ti diamo il benvenuto della console Google Cloud.

    6. Fai clic su Salva .

  3. Gli attivatori installabili di Apps Script consentono a un progetto di script di eseguire una funzione specificata quando vengono soddisfatte determinate condizioni, ad esempio quando un foglio di lavoro viene aperto o modificato. Crea un attivatore:

    1. Apri il progetto Apps Script.
    2. Fai clic su Attivatori .
    3. Fai clic su Aggiungi trigger.
    4. Nella finestra di dialogo Aggiungi trigger per YOUR_PROJECT_NAME, configura il Attivatore:
      1. Nell'elenco Scegli quale funzione eseguire, seleziona handleEdit.
      2. Nell'elenco Scegli quale deployment eseguire, seleziona Head.
      3. Nell'elenco Seleziona origine evento, scegli Da foglio di lavoro.
      4. Nell'elenco Seleziona il tipo di evento, scegli Alla modifica.
      5. Nell'elenco Impostazioni di notifica degli errori, seleziona Avvisami ogni giorno.
    5. Fai clic su Salva.
    6. Se ti viene chiesto di scegliere un Account Google, seleziona l'account appropriato e poi fai clic su Consenti.

      Ciò consente al tuo progetto Apps Script di vedere, modificare creare ed eliminare i fogli di lavoro di Fogli; e per connetterti un servizio esterno.

  4. Un file manifest di un progetto Apps Script è un file JSON che specifica le informazioni di base del progetto di cui Apps Script ha bisogno per eseguire correttamente uno script. Tieni presente che l'editor di Apps Script nasconde i file manifest per impostazione predefinita per proteggere le impostazioni del progetto Apps Script. Modifica il file manifest:

    1. Apri il progetto Apps Script.
    2. Fai clic su Impostazioni progetto .
    3. Seleziona Mostra "appsscript.json". casella di controllo del file manifest nell'editor.
    4. Fai clic su Editor .
    5. Il file manifest viene visualizzato come file di progetto denominato appsscript.json. Per modificare il file, selezionalo.
    6. Il campo oauthScopes specifica un array di stringhe. Per impostare gli ambiti di autorizzazione utilizzati dal progetto, aggiungi un array con gli ambiti che vuoi supportare. Ad esempio:

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

      In questo modo gli ambiti espliciti vengono impostati su:

      • Connettersi a un servizio esterno
      • Visualizzare, modificare, configurare ed eliminare i dati di Google Cloud e visualizzare l'indirizzo email del tuo Account Google
      • Visualizzare, modificare, creare ed eliminare tutti i tuoi fogli di lavoro
    7. Fai clic su Salva .

Esegui il deployment di un flusso di lavoro che crea un'istanza VM

Esegui il deployment di un flusso di lavoro che viene attivato quando viene approvata una richiesta di creazione di un'istanza VM. Il flusso di lavoro chiama Connettore API Compute Engine per creare un'istanza VM di Compute Engine basata sulle specifiche raccolte tramite il modulo.

Console

  1. Nella console Google Cloud, vai a Workflows pagina:

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci un nome per il nuovo flusso di lavoro: create-vm-from-form.

  4. Nell'elenco Regione, seleziona us-central1 (Iowa).

  5. In Account di servizio, seleziona l'impostazione predefinita di Compute Engine account di servizio (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  6. Fai clic su Avanti.

  7. Nell'editor del flusso di lavoro, inserisci la seguente definizione per il flusso di lavoro:

    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. Fai clic su Esegui il deployment.

gcloud

  1. Crea un file di codice sorgente per il tuo flusso di lavoro:

    touch create-vm-from-form.yaml
  2. In un editor di testo, copia il seguente flusso di lavoro nel file di codice sorgente:

    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. Esegui il deployment del flusso di lavoro inserendo il seguente comando:

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

    Sostituisci PROJECT_NUMBER con il tuo Google Cloud del progetto. Puoi recuperare il numero di progetto:

    gcloud projects describe PROJECT_ID

Testa il flusso end-to-end

Per verificare che tutto funzioni come previsto, prova a esaminare l'intera e il processo di sviluppo.

  1. Inviati il modulo e rispondi alle domande in modo appropriato.

    Assicurati che le specifiche utilizzate per creare un'istanza VM siano valide; altrimenti l'esecuzione del flusso di lavoro non riuscirà. Per ulteriori informazioni, vedi Famiglia di macchine per uso generico di Compute Engine.

  2. Per inviare la risposta, fai clic su Invia.

  3. Apri il modulo in Moduli.

  4. Fai clic su Risposte.

  5. Fai clic su Visualizza in Fogli.

    Si apre il foglio di lavoro collegato.

  6. Nella riga della risposta, seleziona la casella di controllo Approvato?.

  7. Apri il progetto Apps Script.

  8. Fai clic su Esecuzioni .

    Il trigger deve essere eseguito e elencato con lo stato Completed.

  9. Verifica che il flusso di lavoro create-vm-from-form sia stato completato correttamente:

    Console

    1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

      Vai a Flussi di lavoro

    2. Nella pagina Flussi di lavoro, fai clic sul flusso di lavoro create-vm-from-form per accedere alla relativa pagina dei dettagli.

    3. Nella pagina Dettagli flusso di lavoro, per recuperare i dettagli di un particolare esecuzione, fare clic sull'ID esecuzione appropriato.

      Lo stato di esecuzione dovrebbe essere Riuscito e, nel riquadro Input, dovresti vedere le specifiche della VM che hai richiesto.

    gcloud

    Recupera un elenco dei tentativi di esecuzione del tuo flusso di lavoro:

    gcloud workflows executions list create-vm-from-form

    Il risultato dovrebbe essere simile al seguente:

    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. Verifica che sia stata creata una nuova VM come previsto:

    Console

    Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

    L'istanza VM dovrebbe essere elencata con uno stato che indica che in esecuzione.

    gcloud

    Recupera un elenco aggregato di tutte le VM in tutte le zone per un progetto:

    gcloud compute instances list

    L'istanza VM dovrebbe essere elencata con uno stato che indica che è in esecuzione.

    Per ulteriori informazioni sul comando gcloud compute instances list, consulta la pagina di riferimento.

Esegui la pulizia

Se hai creato un nuovo progetto per questo tutorial, elimina il progetto. Se hai utilizzato un progetto esistente e vuoi conservarlo senza le modifiche aggiunte in questo tutorial, elimina le risorse create per il tutorial.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Elimina le risorse create in questo tutorial

  1. Eliminare file da Drive.
  2. Elimina un'istanza VM di Compute Engine.
  3. Elimina un flusso di lavoro.

Passaggi successivi