<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>diploD &#187; GAS</title>
	<atom:link href="http://www.diplod.it/tag/gas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Creare un web service con Google App Script. E magari leggere uno spreadsheet..</title>
		<link>http://www.diplod.it/2015/02/13/creare-un-web-service-con-google-app-script-leggere-spreadsheet/</link>
		<comments>http://www.diplod.it/2015/02/13/creare-un-web-service-con-google-app-script-leggere-spreadsheet/#comments</comments>
		<pubDate>Fri, 13 Feb 2015 14:26:10 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[google apps]]></category>
		<category><![CDATA[Google Apps Script]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[spreadsheet]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1491</guid>
		<description><![CDATA[Sono lontani i tempi per cui se dovevi pubblicare un web service di test eri costretto tribolare in qualche ambiente di sviluppo, per poi caricare il tutto via ftp su un web server e testare il tuo servizio. Da qualche tempo ormai possiamo fare tutto da browser. Con Google Apps Script il concetto è semplice, basta accedere a Drive e scrivere qualche riga di codice javascript.]]></description>
				<content:encoded><![CDATA[<p>Sono lontani i tempi per cui se dovevi pubblicare un web service di test eri costretto tribolare in qualche ambiente di sviluppo, per poi caricare il tutto via ftp su un web server e testare il tuo servizio. Da qualche tempo ormai possiamo fare tutto da browser.</p>
<p>Con <strong>Google Apps Script</strong> il concetto è semplice, bisogna accedere a <strong>Drive</strong> e creare un nuovo documento. Andare su <em>Altro</em> e poi <em>Collega altre applicazioni</em>.</p>
<p>Filtrando tra quelle di Google, dobbiamo aggiungere<em> Google Apps Script</em>.</p>
<p><span id="more-1491"></span></p>
<p><a href="http://www.diplod.it/wp-content/uploads/2015/02/script.png"><img class="alignnone size-full wp-image-1494" src="http://www.diplod.it/wp-content/uploads/2015/02/script.png" alt="script" width="733" height="497" /></a></p>
<p>Ora tra i documenti disponibili abbiamo anche <em>Google Apps Script</em>.</p>
<p>Creiamo quindi un nuovo documento script.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2015/02/menu.png"><img class="alignnone size-full wp-image-1495" src="http://www.diplod.it/wp-content/uploads/2015/02/menu.png" alt="menu" width="535" height="447" /></a></p>
<p>&nbsp;</p>
<p>Si aprirà un documento dove possiamo scrivere codice javascript.</p>
<p>Come si legge nella <a title="Content Service" href="https://developers.google.com/apps-script/guides/content" target="_blank">documentazione</a>:</p>
<blockquote><p>Quando uno script viene pubblicato come una web app , la funzioni speciali di callback doGet( ) e doPost( ) vengono invocate quando viene effettuata una richiesta per l&#8217;URL dello script . Invece di restituire un oggetto dell&#8217;interfaccia utente creato con l&#8217;UI Service o l&#8217;HTML Service, il Content Service può essere utilizzato per restituire contenuto testuale crudo. Questo consente di scrivere script che agiscono come &#8220;servizi&#8221; , rispondendo alle richieste GET e POST e servono dati di vario tipo MIME.</p></blockquote>
<p>&nbsp;</p>
<p>Possiamo quindi costruire il nostro servizio web, scrivendo ad esempio queste poche righe di codice:</p>
<p><code>function doGet(){<br />
returnContentService.createTextOutput('Hello, world!');}</code></p>
<p>Di fatto abbiamo realizzato un servizio che risponde a una chiamata GET scrivendo &#8220;Hello, world!&#8221;.</p>
<p>Ora siamo pronti per pubblicarlo, per capire come funziona la pubblicazione. Poi potremmo fare qualcosa di più utile, come ad esempio rispondere con un JSON contenente qualche dato elaborato a partire da un parametro passato nella chiamata.</p>
<p>Le istruzioni per la pubblicazione sono riportate <a title="pubblicare web app GAS" href="https://developers.google.com/apps-script/guides/web#deploying_a_script_as_a_web_app" target="_blank">qui</a>, ma di fatto è sufficiente andare da menu <em>Pubblica </em>&gt; <em>Distribuisci come applicazione web..</em> e vedremo apparire questa finestra. Dopo aver salvato la versione del progetto, ci verrà chiesto come pubblicare la nostra applicazione.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2015/02/gas1.png"><img class="alignnone size-full wp-image-1496" src="http://www.diplod.it/wp-content/uploads/2015/02/gas1.png" alt="gas" width="381" height="297" /></a></p>
<p><em><strong>Esegui applicazione come</strong></em>: stabilisce qual’è l’utente che esegue lo script. Se scegliamo di farlo eseguire dall’utente che accede, quest&#8217;ultimo dovrà approvare l’esecuzione dello script prima di poterlo lanciare, se invece si sceglie di farlo eseguire come se stessi, l’utente sviluppatore dovrà approvare lo script la prima volta, poi chiunque accede potrà lanciarlo senza doverlo approvare. Con questa seconda opzione sarà quindi possibile distribuire il web service che stiamo creando anche a utenti anonimi (non loggati in Google).</p>
<p><strong>Chi accede all’applicazione</strong>: abbiamo diversi gradi, possiamo scegliere di tenere il servizio privato, oppure pubblico per utenti loggati in google o addirittura per qualsiasi utente, e di conseguenza anche qualsiasi applicazione di terzi.</p>
<p>Di fatto ora possiamo chiamare da browser l&#8217;url che Google ci restituisce dopo la pubblicazione, per vedere apparire il nostro &#8220;Hello, world!&#8221;.</p>
<p>Vediamo come fare qualcosa di più evoluto, ad esempio un servizio che prende in pasto un numero e restituisce un JSON con scritto se è pari o dispari.</p>
<p>Scriviamo questo codice:</p>
<p><code>function doGet(request) {<br />
var number = request.parameter.number;<br />
if (number % 2 == 0) { var type = "pari"; } else { var type = "dispari"; }<br />
var result = {<br />
numero: number,<br />
tipologia: type,<br />
};<br />
return ContentService.createTextOutput(JSON.stringify(result))<br />
.setMimeType(ContentService.MimeType.JSON);<br />
}</code></p>
<p>Abbiamo aggiunto l&#8217;oggetto request tra i parametri della funzione doGet(), ci salviamo il parametro &#8220;number&#8221; in una variabile e calcoliamo se è pari o dispari. Poi scriviamo tutto nell&#8217;oggetto result, restituendolo come JSON.</p>
<p>Dovremo salvare una nuova versione dello script, andando su <em>File</em> &gt; <em>Gestisci Versioni..</em> e poi tornare a pubblicare lo script in questa nuova versione. Se all&#8217;url ora aggiungiamo la stringa ?number=42, otterremo questo risultato, chiamandolo dal browser:</p>
<pre style="color: #000000;">{"numero":"42","tipologia":"pari"}</pre>
<p>Di fatto abbiamo realizzato un <strong>web service</strong> o lo abbiamo reso pubblico in un attimo, il tutto <strong>senza mai lasciare il nostro browser</strong>.</p>
<p>Se poi volessimo spingerci oltre, potremmo addirittura anche andare a leggere un foglio spreadsheet e restituire i valori delle celle che contiene. Pensiamo a quante mirabolanti applicazioni potremmo costruire se avessimo una infrastruttura basata sulle Google Apps for Enterprise, potremmo ad esempio costruire web service che pubblicano i dati di un foglio condiviso, dove più utenti di una stessa azienda collaborano alla definizione di dati che poi vengono distribuiti ad applicazioni terze.</p>
<p>E per restituire le prime 9 celle di un foglio chiamato &#8220;Foglio1&#8243; sarebbe sufficiente un pezzo di codice così:</p>
<p><code>function doGet(request) {<br />
var key = request.parameter.key;<br />
if (key == "<em>chiave_di_autenticazione</em>") {<br />
var ss = SpreadsheetApp.openById(<em>id_del_documento</em>);<br />
var values = ss.getSheetByName("Foglio1").getRange(1,1,3,3).getValues();<br />
return ContentService.createTextOutput(values);<br />
} else {<br />
return ContentService.createTextOutput("Invalid Key");<br />
}<br />
}</code></p>
<p>Bello vero? :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2015/02/13/creare-un-web-service-con-google-app-script-leggere-spreadsheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
