Microsoft Excel

Microsoft Excel

venerdì 29 gennaio 2016

Ottenere markup su mappa di Google partendo da un foglio di calcolo

La posizione di un punto su una mappa viene individuata dalle coordinate di lat, lng e altitudine. 
Il punto di coordinate incognite viene rilevato, sul terreno, come punto incognito di un triangolo che ha gli altri vertici in punti di coordinate note. Con gli strumenti si misurano, sul terreno, gli angoli e le distanze mancanti. Tale operazione è chiamata triangolazione (risoluzione del triangolo). Le triangolazioni moderne sono fatte con l’utilizzo di satelliti che ruotano intorno alla terra. I satelliti hanno posizione relativa nota (cioè è nota la distanza tra di loro). Essi inviano continuamente un segnale radio verso la Terra. Il segnale viene captato dalle antenne dei moderni ricevitori, posizionati nei punti di coordinate incognite, in modo che la distanza del satellite è conosciuta. La distanza è misurata in base al tempo di andata e ritorno del segnale dal ricevitore al satellite.  
Il principio per la determinazione di un punto di coordinate incognite è dunque lo stesso: in questo caso però il punto cercato è l’intersezione di quattro sfere (ciascuna) di raggio uguale alla distanza del satellite dal punto. 
Gli smartphone più recenti sono moderni ricevitori, meno potenti di quelli professionali, ma comunque in grado di dare accuratezze di misura dell’ordine di 5 ml in piano. Dotati di specifici programmi (applicazioni) per la misura delle coordinate, restituiscono la misura di lat e lng del punto su quale siamo posizionati. 
La risposta dunque è una coppia di numeri che viene rilevata e trascritta su un foglio di calcolo standard.
Allo stesso modo, per il ns. scopo e più semplicemente, le coordinate lat e lng di un punto possono essere rilevate direttamente su Google Maps cliccando con il tasto dx del mouse sul punto (incognito) e attivando l’opzione “Che cosa c’è qui?”.
Dunque sappiamo determinare lat e lng di un punto. Spesso però è necessario anche visualizzare la posizione dei punti su una mappa. Si pensi al caso della mappatura dei cestini (punti) di una città o la mappatura dei cassonetti stradali o delle centraline dell’energia elettrica.
In questo blog vedremo come ottenere una mappatura di cassonetti stradali di una zona di raccolta, partendo dalle coordinate degli stessi registrate su un foglio di calcolo. 
Cioè partendo da un foglio elettronico di Google:



Vogliamo ottenere:



La mappa, che si trova all’indirizzo evidenziato, è di tipo interattivo: rende possibile quindi spostamenti, zoom e l’utilizzo della funzione street view. Inoltre la mappa, comandata dal foglio di calcolo, è facilmente modificale: se un cassonetto viene rimosso o spostato, basta semplicemente cancellare la voce relativa sul foglio di calcolo o cambiare le coordinate.

Procedere come segue:

1. Il foglio elettronico è la nostra sorgente dei dati “primitiva”.



2. Accedere all’editor di script del foglio elettronico



3. Studiare la prima parte del tutorial “Shortcuts: Getting Google Drive Data Onto a Map” di Paul Saxman all’indirizzo https://www.youtube.com/watch?v=OS2Nj5G9cGs . Copiare e incollare lo script chiamato “JsonOut” e apportare la seguente correzione:




Ricordarsi di inserire i propri dati nelle variabili SPREADSHEET_NAME e SHEET_NAME.

4. Distribuire lo script come applicazione web (tasto con la nuvoletta). Trascrivere l’URL dell’applicazione web dove si trova la nostra sorgente [esecutiva] di dati.




5. Ottenere una Google api key: https://developers.google.com/maps/documentation/javascript/get-api-key.

6. Creare un file html vuoto con un html editor, tipo Notepad++. 

7. Dopo aver capito come creare una pagina Web con una mappa centrata, seguendo il tutorial https://developers.google.com/maps/documentation/javascript/tutorialcopiate e incollate la funzione “function inizialize ()” nella parte centrale del tutorial https://developers.google.com/maps/tutorials/data/json_example per ottenere una mappa centrata, completa di una seconda funzione necessaria per caricare le API di Google. Inoltre il parametro “jsonp” viene aggiunto alla fine dell’URL per eseguire la funzione callback quando la API è caricata.

8. Dopo aver capito come posizionare un marker sulla mappa studiando il tutorial alla pagina
per posizionare un marker per ogni indirizzo del foglio elettronico. 

9. Il tutorial https://developers.google.com/maps/tutorials/data/json_example  e soprattutto il video “Shortcuts: Getting Google Drive Data Onto a Map” di Paul Saxman https://www.youtube.com/watch?v=OS2Nj5G9cGs sono dunque le basi da seguire per arrivare al file html definitivo  [che inserito nell’url del browser vi restituisce la mappa con i markers]: 
https://drive.google.com/file/d/0B09__GV_6psQS1JWVXZaYlY3alU/view?usp=sharing 

Buon Lavoro
Daniele Paolinelli



















mercoledì 27 gennaio 2016

From xml to Excel: importare un file xml su Excel con Power Query


Chi si occupa di lavori pubblici ha la necessità di disporre di un prezzario di riferimento completo in formato Excel. Generalmente si trova in vendita allegato al libro cartaceo, mentre più difficile è trovarne uno aggiornato e completo on-line.

Come esempio vediamo come importare il prezzario della Regione Toscana nonostante la versione Excel si trovi online all’indirizzo qui riportato:


In definitiva vedremo dunque come sia possibile importare file xml direttamente in Excel con Power Query.

Il risultato che si ottiene è una tabella del tipo:


Procedere nel modo seguente: 
1. Per prima cosa scarichiamo l’add-on di Excel Power Query, installabile sulle versioni 2010 e successive di Excel. 




2. Scaricare il file xml del prezzario di riferimento.


3. Il file xml del prezzario di riferimento è un file di scrittura dove i dati sono “strutturati”, cioè scritti con riferimenti e simboli propri del linguaggio stesso.



4. Importa il file xml in Excel.



5. Importando il file automaticamente si apre lo “Strumento di navigazione”. Posizionare il mouse sulla tabella articolo. L’ ”editor di query” (anteprima scaricata), visualizza il prezzario importato. Cliccare “carica” in basso a destra.



6. Le voci di prezzo importate sono numeri interi: nell’importare il file, “Power Query” attribuisce il “tipo di dato: numero intero” alle voci della colonna “prezzo”. Vediamo come risolvere il problema.


7. Accedere all’ “editor avanzato”: Query → Modifica → Editor avanzato. 



L’ “editor avanzato” contiene il codice corrispondente ai passaggi che abbiamo eseguito con i pulsanti. Come si vede dalla figura seguente “Power Query” ha attribuito in automatico alle voci della colonna “prezzo” il tipo “numero intero”.




8. Sostituiamo il “tipo numero intero” “Int64.Type” con il “tipo testo” “type text”. Cliccare su operazione → Chiudi e carica (in alto a sinistra nella barra multifunzione) e otteniamo il risultato voluto.



9. Per finire dobbiamo sostituire, nella colonna prezzo i “punti” con “le virgole”. Accedere all’editor di query dalla barra multifunzione: Query → Modifica. Cliccare con il tasto dx del mouse sulla colonna prezzo e vai a “Sostituisci valori” e completa l’operazione. Il risultato finale è la prima tabella all’inizio del post. 




10. Per finire c’è da dire che la colonna analisi, che contiene i dati che hanno portato alla determinazione del prezzo finale (la cosiddetta Analisi dei Prezzi), può essere ulteriormente sviluppata espandendo (in serie) tutte le tabelle fino ad ottenere i singoli prezzi che hanno concorso alla composizione del prezzo finale. Il prezzario conterrà così anche le colonne relative alla Analisi dei Prezzi.




Buon Lavoro
Daniele Paolinelli












giovedì 16 luglio 2015

Ottenere informazioni da Twitter con “Power Query”

L’uso dei “Social” è ormai diventato sempre più importante e necessario per una azienda. Essi ci permettono di comunicare e condividere le informazioni con un numero sempre maggiore di utenti, velocemente e a basso costo. Altrettanto importante è acquisire e gestire i dati contenuti nei propri profili, che servono all’azienda al fine di risolvere un problema di lavoro. Essi contengono molte informazioni importanti, come ad esempio, la data, il testo, il mittente e le foto. Queste informazioni devono essere gestite nel rispetto della privacy dell’utente.
Con questo blog vediamo come sia possibile acquisire informazioni da Twitter utilizzando “Power Query” e le API di Twitter.
In sostanza, partendo da una timeline di Twitter come quella sotto:



Vogliamo acquisirne le informazioni e in definitiva ottenere un foglio di calcolo del tipo.



Come fare per arrivare a questo lo ha scritto bene lo sviluppatore Kasper De Jonge nel blog http://www.powerpivotblog.nl/getting-data-into-power-query-with-the-twitter-search-api-how-to-hack-pq-to-use-oauth/
Con questo blog voglio solo rendere più chiaro il suo lavoro, adattandolo alle mie esigenze.
Procedere nel modo seguente:

1. Per prima cosa è necessario un account Twitter e l’add-on “Power Query” di Excel. Voglio solo ricordare due cose: per l’add-on “Power Query” di Excel è necessaria la versione di Excel 2010 o superiore; non è possibile applicare questa procedura a WhatsApp: per l’acquisizione delle informazioni dal Web è necessario che l’applicazione sia provvista di API (Application Interface).

2. Dopo l’accesso al proprio  profilo Twitter, nella home page, a sinistra in basso, accedere alla pagina Sviluppatori → Documentation → RestAPIs → API Console Tool (oppure direttamente in https://dev.twitter.com/rest/tools/console), fino a trovarsi in “Exploring the Twitter API”







Ci troviamo infine nella pagina seguente



3. A questo punto inizia il lavoro vero e proprio.
Seguire i passi successivi fino a ritornare alla pagina “Exploring the Twitter API” dove nel campo Authentication, al posto della voce “No Auth” iniziale, troveremo il nome del proprio profilo twitter. Per prima cosa procediamo con l’autenticazione, seguendo le figure sotto.









4. Una volta autenticati automaticamente ritorniamo alla pagina di partenza.
Scegliamo il servizio che interessa. In questo caso si vuole ottenere la timeline dei tweet ricevuti. Premere Send per avere la risposta.




5. "Send" restituisce le chiavi dei parametri (request, riquadro a sinistra) e un “oggetto” response contenente tutte le altre informazioni (riquadro a destra). Le chiavi (key) da inserire sono dunque quelle nella finestra request.
Response contiene tutte le altre informazioni, cioè i dati che vogliamo estrapolare, come “creato il”, “testo”, “entitis”, “ expanded_url“, come quelli che sono selezionati nelle successive figure 12.1, 13.1 e 13.2



6. Accedere all’editor avanzato di Power Query
Aprire un foglio Excel → barra degli strumenti “Power Query” (se avete installato “Power Query”) → Recupera dati esterni → Da altre origini → Query vuota → Editor di Query → Visualizza → Editor avanzato. Si apre a questo punto la pagina dell’editor avanzato (in questo caso c’è scritto Query5 ma voi troverete Query1).







7. Cancellate lo script presente (in italiano) e copiate lo script (in inglese) che trovate nel blog.
Nota: “power query” funziona sia con lo script in italiano o in inglese. controllare che tutte le virgolette siano riportate correttamente e corrispondano alla tastiera italiana. Le password scadono dopo un certo tempo molto piccolo ed è quindi necessario provvedere al loro aggiornamento.

let
Source = Web.Contents(“https://api.twitter.com/1.1/search/tweets.json?q=PowerPivot&count=100″, [Headers=[#”Authorization”=”OAuth oauth_consumer_key=””YOURKEY””, oauth_nonce=””YOURCODE””, oauth_signature=””YOURSIGNATURE””, oauth_signature_method=””HMAC-SHA1″”, oauth_timestamp=””TIMESTAMP””, oauth_token=””YOURTOKEN””, oauth_version=””1.0””]]
)
in
Source


8. Sostituite“https://api.twitter.com/1.1/search/tweets.json?q=PowerPivot&count=100”con “https://api.twitter.com/1.1/statuses/mentions_timeline.json”


9. Sostituite le chiavi “YOURKEY”,”YOURCODE”, ecc. con i corrispondenti valori alla pagina “Exploring the Twitter API”, avendo cura di inserire tutte le virgolette (e di verificare che siano le stesse della tastiera italiana)


10. Attenzione adesso: (nella pagina dell’editor avanzato) il codice compreso tra “Source=” e “in” deve stare tutto su una riga, come nella figura sotto (e non come al punto 7). Non chiedetemi il perché, ma altrimenti il codice non funziona.




11. Dopo aver scritto il codice premere su “Operazione completata” (in basso a dx della pagina dell’editor avanzato, cliccate sulla figura “api.twitter.com 1551 bytes” e ottenete una lista di record come nella figura qui sotto. Convertite la lista dei record in tabella premendo il bottone “In tabella”. Premere OK.





12. Adesso si tratta di interrogare i dati della tabella. Clicchiamo il bottone a dx accanto a Column1 e selezioniamo, ad esempio, 3 voci: “create at“, “text” ed “entitis” (in figura non si vede).





13. Interrogare in sequenza la colonna “Column1.entitis” selezionando la voce “media” e la colonna “Column1.entitis.media” selezionando la voce “expanded_url”






14. Si torna alla tabella di partenza con il pulsante “Carica e chiudi” (nella pagina Home)




Quindi abbiamo visto come acquisire la ns. timeline di Twitter, ma procedure simili possono essere utilizzate per gli altri Social purchè questi siano dotati di API.

Buon Lavoro
Daniele Paolinelli
















martedì 19 maggio 2015

"Stampa di unione" con google form e google script per ottenere preventivi automatizzati


La "stampa di unione" è il processo che ci permette di compilare in automatico spazi vuoti di un "foglio doc modello" (o template), utilizzando dati di un "foglio di calcolo" (questo è solo il caso più tipico). Gli spazi vuoti si chiamano "campi variabili". Il template può essere già esistente oppure può esserne creato uno personalizzato. Il modello è formato da "campi fissi" precompilati ("sempre gli stessi") e "campi variabili" ("sempre diversi") inizialmente vuoti, che saranno poi compilati automaticamente.
Un esempio di "stampa di unione" con output di stampa in formato pdf è del tipo:



Nell'esempio sono stati evidenziati alcuni "campi fissi" con rettangolo celeste (nella parentesi quadra dovrebbe essere formattato il simbolo €, che invece risulta assente)  e alcuni "campi variabili" con ovali verdi, vuoti nel template iniziale, che troviamo, nel pdf finale, compilati in automatico con i dati del foglio di calcolo.
Altri "campi fissi" sono "Data del sopralluogo", "Comune", "via". I "campi variabili" relativi sono la data, il nome del comune e il nome della via.

In molti hanno già scritto circa la "stampa di unione" e i suoi diversi utilizzi.

Nel ns. caso vediamo come utilizzare la "stampa di unione" per redigere preventivi di spesa con acquisizione dei dati direttamente sul territorio, mediante la compilazione di un form di Google on-site. 
Procedere in questo modo:

1. Creare un form di google con i campi da compilare.
(nota: lo spreadsheet supporta al max 23 colonne, quindi non compilare più di 22 campi).
La prima pagina del modulo on-line del form è del tipo:



2. Modifica la destinazione delle risposte del modulo in un foglio di calcolo chiamato ad es., nel ns. caso, "Database preventivi M.C.A. suolo pubblico": da barra degli strumenti del modulo → "risposte" → "cambia destinazione della riposta" → "nuovo foglio di calcolo" → rinomina "Database preventivi M.C.A. suolo pubblico ".


Foglio di calcolo con la destinazione delle risposte del modulo

 
3. Accedi al foglio "Database preventivi M.C.A. suolo pubblico" (il foglio di calcolo contiene campi colonna generati con il form). Aggiungere nuove colonne (sono "campi calcolati") al foglio di calcolo che conterranno "valori calcolati" (cioè risultati di operazioni algebriche) dei dati immessi con il form: il totale del preventivo di spesa sarà dato dalla somma dei valori dei campi calcolati.
Ad esempio:
"costo rimozione" è il "campo calcolato" che contiene il prodotto "quantità di materiale da smaltire" (dato immesso con il form) x 3,28 [€/kg] (prezzo unitario del mat. da smaltire).


Lo stesso Foglio di calcolo con la destinazione delle risposte del modulo e le nuove colonne di “campi calcolati” aggiunte.

 
4. Dal foglio di calcolo "Spreadsheet preventivi" accedere all'editor di script (barra delle funzioni → strumenti → editor di script). 
Da notare quindi che lo script va scritto nell'editor del foglio di calcolo (e non nell'editor del form).

5. Creare un foglio doc con il "modello (template) di preventivo". Il "modello di preventivo" è un file doc che contiene campi fissi e campi variabili. Questi ultimi devono essere scritti con il testo della colonna racchiuso tra %%.
Ad esempio:
Costo intervento di rimozione e smaltimento del materiale (campo fisso):  %quantità di materiale da smaltire% [Kg] x 3.28 [€/kg] (campo fisso)  =  %costo rimozione%  [€]


 
6. Tornare allo spreadsheet e accedere all'editor di script. Adesso si tratta di scrivere in sostanza due funzioni.
Una funzione che ha lo scopo di scrivere nel foglio di calcolo "valori calcolati" nelle celle dei "campi calcolati" [settaggio dei valori].
La seconda funzione crea, quando un form viene inviato, una copia del "modello di preventivo" inserendo i valori nei campi variabili compresi tra "%". La funzione crea anche una versione pdf della copia del "modello del preventivo" doc (infine una volta creato il pdf, la funzione elimina la copia doc del "modello del preventivo"). La funzione è stata scritta da Andrew Roberts: https://gist.github.com/andrewroberts/21bc8b1b3fc7d3b40e6b.

Una copia dello script da utilizzare si trova a questo link:
https://docs.google.com/spreadsheets/d/16AdHQ-lUexcofM_HylTR41ebZtKrD9r6sNbtgHXJyWs/export?format=doc

 
7. Aggiungere i triggers (grilletti) al progetto. Il trigger attiva la funzione quando si verifica un determinato evento come, nel nostro caso, l'invio del form. Dalla barra di funzione dell'editor di script accedere a risorse  trigger del progetto corrente aggiungi trigger.

8. Richiede l'autorizzazione alla pubblicazione dello script.

9. Salvare e chiudere.

A questo punto è possibile inviare il form e ottenere in automatico il preventivo pdf costruito sulla base dei dati immessi nel form.

Buon Lavoro
Daniele Paolinelli





mercoledì 25 febbraio 2015

“Codici a barre” con Excel per la gestione di un piccolo magazzino

Per generare “codici a barre” personalizzati con Excel, pronti per essere stampati e applicati sui prodotti consultare il blog pmi http://www.pmi.it/tecnologia/software-e-web/tutorial/7013/codici-a-barre-con-excel.html
Per generare codici a barre con Excel è necessaria una routine vba che trasforma il codice del prodotto in un codice a barre non formattato e istallare in windows il font Code EAN13 che formatta il codice nelle usuali “barre a spessore”. Tutto questo può essere scaricato gratuitamente dal sito http://grandzebu.net.
 Il procedimento da seguire per ottenere un semplice foglio di calcolo per la gestione di un piccolo magazzino è il seguente:
1.       Collegarsi al sito http://grandzebu.net e scaricare il font Code EAN13 e il foglio di calcolo con la routine vba per generare il codice a barre alfanumerico (“non formattato”). Come fare ciò è ben spiegato nel blog pmi …………………. Il font Code EAN 13 formatta il codice alfanumerico e restituisce il codice con “barre a spessore”.
2.       Completiamo il foglio di calcolo aggiungendo altre colonne contenenti il soggetto che prende in carico il prodotto, la data di presa in carico del prodotto, la quantità, la data di presa in carico, ecc. Nominare il foglio come “Carico”.
La funzione ean13 è la routine vba che genera il codice alfanumerico. La routine è un modulo all’interno del campo Codice. La finestra del campo Codice si raggiunge dalla Barra delle Applicazioni→ Sviluppo →  Codice → Visual Basic


Le celle della colonna “D” sono semplicemente formattate con il font Code EAN13 e restituiscono il codice a barre corrispondente al codice alfanumerico della colonna “C”.
Disponiamo adesso dei codici a barre che possiamo stampare e applicare ai prodotti del nostro piccolo magazzino.

3.     Passare a un secondo foglio della stessa cartella e nominarlo “Scarico”. Nominare la prima colonna come “Codice Alfanumerico”, la seconda “Codice a barre”, la terza “Prodotto”, la quarta la “Restituito da” e così via. La colonna “A” contiene il codice alfanumerico restituito dal lettore (scanner) di barcode, le colonne “D” e “E” sono da compilare manualmente, mentre le altre colonne contengono formule tipo quella riportata nella barra della funzione della fig. sotto e per inserire in automatico i dati di “Carico”. Infine la colonna “H” conteggia il tempo di detenzione del prodotto: con la formattazione condizionale della cella possiamo verificare visivamente quanto tempo (in questo caso se è maggiore di 30 gg la cella diventa rossa). Dopo la lettura con lo scanner del codice a barre del prodotto restituito (riportato in colonna “A”), il foglio di “Scarico” si presenta come sotto.
4.       Acquistare uno scanner di codici a barre e collegarlo alla porta usb del vs. computer. Uno scanner di codice a barre è un dispositivo che “decodifica” il codice a barre restituendo il codice alfanumerico. Procedere come al punto 5.
Una alternativa economica e dinamica all’acquisto di uno scanner a pistola è utilizzare come scanner uno smartphone con una “app” specifica per la lettura dei codici a barre. Io utilizzo uno smartphone lumia 635 e l’applicazione “Barcode Search”. Scaricare l’app dal sito di Windows phone sullo smartphone. L’app legge in automatico il codice barcode del prodotto. Attivare la pagina “list” e cliccare su “Excel” in alto a sinistra. L’app restituisce direttamente in excel (di office 365, cioè la versione web di excel). A questo punto non rimane altro che scaricare il file excelweb sul proprio excel v. desktop (in questo caso non è necessario procedere al punto 5).

5.      Attivare il foglio “Scarico” e attivare la prima cella libera della colonna “Codice Alfanumerico” (nel ns. esempio attivare la cella A3). Passare lo scanner sul codice a barre applicato sul prodotto in restituzione. Il lettore restituisce il codice alfanumerico nella cella attiva del foglio e attiva la cella successiva. Si ottiene un risultato analogo alla riga 2 della figura precedente.
6.       A questo punto non rimane altro che compilare le colonne “D” e “E”.
 
Adesso abbiamo il controllo del materiale in entrata e uscita dal magazzino.
Buon Lavoro
Daniele Paolinelli