App web

Pubblica lo script come app web se crei un'interfaccia utente. Ad esempio, uno script che consente agli utenti di programmare appuntamenti con i membri di un team di assistenza è meglio presentato come app web in modo che gli utenti vi accedano direttamente dai browser.

Sia gli script autonomi che gli script associati alle applicazioni Google Workspace possono essere trasformati in app web, a condizione che soddisfino i seguenti requisiti.

Requisiti per le app web

Uno script può essere pubblicato come app web se soddisfa i seguenti requisiti:

Parametri di richiesta

Quando un utente visita un'app o un programma invia all'app una richiesta HTTP GET, Google Apps Script esegue la funzione doGet. Quando un programma invia all'app una richiesta HTTP POST, Apps Script esegue doPost. In entrambi i casi, l'argomento e rappresenta un parametro evento che può contenere informazioni su qualsiasi parametro della richiesta. La struttura dell'oggetto evento è mostrata nella tabella seguente:

Campi
e.queryString

Il valore della parte della stringa di query dell'URL o null se non è specificata alcuna stringa di query

name=alice&n=1&n=2
e.parameter

Un oggetto di coppie chiave/valore che corrispondono ai parametri della richiesta. Per i parametri con più valori viene restituito solo il primo valore.

{"name": "alice", "n": "1"}
e.parameters

Un oggetto simile a e.parameter, ma con un array di valori per ogni chiave

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

Il percorso dell'URL dopo /exec o /dev. Ad esempio, se il percorso dell'URL termina con /exec/hello, le informazioni sul percorso sono hello.

e.contextPath Non utilizzato, sempre la stringa vuota.
e.contentLength

La lunghezza del corpo della richiesta per le richieste POST o -1 per le richieste GET

332
e.postData.length

Uguale a e.contentLength

332
e.postData.type

Il tipo MIME del corpo POST

text/csv
e.postData.contents

Il testo dei contenuti del corpo POST

Alice,21
e.postData.name

Sempre il valore "postData"

postData

Trasferisci parametri come username e age a un URL come il seguente:

https://script.google.com/.../exec?username=jsmith&age=21

Visualizza i parametri nel seguente modo:

function doGet(e) {
  var params = JSON.stringify(e);
  return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}

Nell'esempio precedente, doGet restituisce il seguente output:

{
  "queryString": "username=jsmith&age=21",
  "parameter": {
    "username": "jsmith",
    "age": "21"
  },
  "contextPath": "",
  "parameters": {
    "username": [
      "jsmith"
    ],
    "age": [
      "21"
    ]
  },
  "contentLength": -1
}

I seguenti nomi di parametri sono riservati dal sistema e non devono essere utilizzati nei parametri URL o nei corpi POST:

  • c
  • sid

L'utilizzo di questi parametri può generare una risposta HTTP 405 con il messaggio di errore "Spiacenti, il file che hai richiesto non esiste". Se possibile, aggiorna lo script in modo da utilizzare nomi di parametri diversi.

Esegui il deployment di uno script come app web

Per eseguire il deployment di uno script come app web:

  1. In alto a destra nel progetto di script, fai clic su Esegui il deployment > Nuovo deployment.
  2. Accanto a "Seleziona tipo", fai clic su Attiva tipi di deployment > App web.
  3. Inserisci le informazioni sulla tua app web nei campi della sezione "Configurazione del deployment".
  4. Fai clic su Esegui il deployment.

Condividi l'URL dell'app web con le persone che vuoi che la utilizzino, a condizione che tu abbia concesso loro l'accesso.

Le app web implementate in un dominio smettono di funzionare se la loro proprietà viene trasferita a un drive condiviso o a un account in un dominio diverso. Questo problema può essere risolto se il nuovo proprietario o collaboratore esegue nuovamente il deployment dell'app web nel nuovo dominio. In alternativa, se l'app web viene spostata di nuovo nel suo dominio originale, l'app web inizia a funzionare di nuovo per quel dominio senza essere ridistribuita.

Testare il deployment di un'app web

Per testare lo script come app web:

  1. In alto a destra nel progetto di script, fai clic su Esegui il deployment > Test dei deployment.
  2. Accanto a "Seleziona tipo", fai clic su Attiva tipi di deployment > App web.
  3. Sotto l'URL dell'app web, fai clic su Copia.
  4. Incolla l'URL nel browser e testa la tua app web.

    Questo URL termina con /dev e può essere accessibile solo agli utenti con accesso in modifica allo script. Questa istanza dell'app esegue sempre il codice salvato più di recente ed è destinata solo ai test durante lo sviluppo.

Per testare la funzionalità OAuth granulare nell'app web, assicurati che il tuo progetto non disponga già di alcune autorizzazioni. Per invalidare le autorizzazioni esistenti, utilizza ScriptApp.invalidateAuth. Per le app web già implementate e in esecuzione con l'identità dell'utente attivo, modifica il campo JSON executeAs nel manifest in USER_DEPLOYING.

Quando esegui il deployment di app web da eseguire come sviluppatore, presta molta attenzione alla gestione dei token OAuth ottenuti tramite ScriptApp.getOAuthToken. Questi token possono concedere ad altre applicazioni l'accesso ai tuoi dati. Non trasmetterli mai al client.

Autorizzazioni

Le autorizzazioni per un'app web variano a seconda di come scegli di eseguire l'app:

  • Esegui l'app come me: in questo caso, lo script viene sempre eseguito come te, il proprietario dello script, indipendentemente da chi accede all'app web.
  • Esegui l'app come utente che accede all'app web: in questo caso, lo script viene eseguito con l'identità dell'utente attivo che utilizza l'app web. Questo approccio di autorizzazione fa sì che l'app web mostri l'email del proprietario dello script quando l'utente autorizza l'accesso.

Per prevenire abusi, Apps Script impone limiti alla velocità con cui i nuovi utenti possono autorizzare un'app web che viene eseguita come utente. Questi limiti dipendono, tra gli altri fattori, dal fatto che l'account di pubblicazione faccia parte di un dominio Google Workspace.

Collabora alle app web utilizzando il Drive condiviso. Quando viene eseguito il deployment di un'app web in un Drive condiviso, la scelta di "Esegui come te" fa sì che l'app web venga eseguita sotto l'autorità dell'utente che l'ha eseguita (poiché non esiste un proprietario dello script).

Incorporare l'app web in Google Sites {:#embed-web-app}

Le app web incorporate sono comunque soggette alle autorizzazioni di accesso per impedire l'uso dannoso. Se l'app web incorporata non sembra funzionare, verifica che le autorizzazioni impostate dal proprietario dell'app web e dall'amministratore del dominio ne consentano l'utilizzo.

Per incorporare un'app web in Sites, devi prima eseguirne il deployment. Devi anche avere l'URL del deployment dalla finestra di dialogo Esegui il deployment.

Per incorporare un'app web in una pagina Sites, segui questi passaggi:

  1. Apri la pagina di Sites in cui vuoi aggiungere l'app web.
  2. Seleziona Inserisci > URL per l'incorporamento.
  3. Incolla l'URL dell'app web e fai clic su AGGIUNGI.

L'app web viene visualizzata in un frame nell'anteprima della pagina. Quando pubblichi la pagina, i visitatori del tuo sito potrebbero dover autorizzare l'app web prima che venga eseguita normalmente. Le app web non autorizzate presentano all'utente richieste di autorizzazione.

App web e cronologia del browser

Per simulare un'applicazione multipagina o una con un'interfaccia utente dinamica controllata tramite parametri URL, definisci un oggetto stato per rappresentare l'interfaccia utente o la pagina dell'app e inserisci lo stato nella cronologia del browser mentre l'utente naviga nell'app. Ascolta gli eventi della cronologia in modo che l'app web mostri l'interfaccia utente corretta quando l'utente naviga avanti e indietro con i pulsanti del browser. Eseguendo query sui parametri URL al momento del caricamento, l'app crea dinamicamente la sua UI in base a questi parametri, consentendo all'utente di avviare l'app in un determinato stato.

Apps Script fornisce due API JavaScript asincrone lato client per facilitare la creazione di app web collegate alla cronologia del browser:

  • google.script.history fornisce metodi per consentire la risposta dinamica alle modifiche della cronologia del browser. Ciò include: l'inserimento di stati (semplici oggetti che definisci) nella cronologia del browser, la sostituzione dello stato principale nello stack della cronologia e l'impostazione di una funzione di callback del listener per rispondere alle modifiche della cronologia.

  • google.script.url fornisce i mezzi per recuperare i parametri URL e il frammento URL della pagina corrente, se sono presenti.

Queste API della cronologia sono disponibili solo per le app web. Non sono supportati per barre laterali, finestre di dialogo o componenti aggiuntivi. Questa funzionalità non è consigliata per l'utilizzo in app web incorporate in Sites.