Cerca con Google

Translate

5 novembre 2012

Tutorial 38 - Importare dati da una tabella HTML in App Inventor - Parte 1


Nel tutorial di oggi ci occuperemo di "data scraping", ovvero quel metodo con cui si prendono delle informazioni dalla rete per poi renderle disponibili all'interno della nostra app.

Nello specifico faremo "scraping" di una tabella HTML visto che in internet, molte volte troviamo dati formattati proprio sotto forma tabellare.

Per cercare di facilitare il più possibile il processo utilizzeremo Google Spreadsheet (tradotto "Foglio di Lavoro" in Google Drive) che servirà da passaggio intermedio tra il sito internet e la nostra app.
I passaggi di base saranno:

1 - Individuare la sorgente dati
2 - Creare un foglio di lavoro Google SpreadSheet e caricarci i dati individuati al punto 1
3 - Creare la nostra app ed usare il componente web per leggere i dati

Ho diviso il tutorial in due parti, iniziamo ad occuparci della raccolta e preparazione dei dati

Google SpreadSheet è uno strumento potentissimo, assomiglia molto ad Excel, in particolare mi ha colpito la semplicità con cui si possono importare i dati da fonti web e la possibilità di formattare e condividere tali dati con semplicità.

In più offre uno strumento chiamato Query Language che permette in pratica di accedere ai nostri dati come se fossero memorizzati in un database SQL!
A questo indirizzo https://developers.google.com/chart/interactive/docs/querylanguage trovate la documentazione completa se volete approfondire la cosa e capirne tutte le potenzialità.
E' quindi possibile leggere e manipolare i dati con le classiche query SQL (se non le conoscete non vi preoccupate, nel video spiego e mostro velocemente alcuni esempi)

Nel nostro caso specifico riusciremo con relativa semplicità ad estrarre dalla pagina del corriere dello sport la classifica di serie A aggiornata ed a mostrare le prime tre squadra in classifica all'interno della nostra APP!
(chiaro trattasi solo di esempio a scopo didattico, poi sarà la vostra fantasia a darvi lo stimolo per completare e migliorare l'app e cercare altri campi di applicazione di questo metodo)

Il bello di questo metodo è che quando la pagina html cambia (perchè ad esempio si è giocata una nuova partita di campionato), il nostro foglio di lavoro si aggiornerà automaticamente e quindi la nostra app ci darà sempre la classifica aggiornata senza alcuno sforzo.
Inoltre se un giorno volessimo cambiare la nostra "base dati" perchè ad esempio il sito non è più disponibile, potremmo semplicemente cambiare la pagina web nel foglio di lavoro senza bisogno di cambiare la nostra app (parlo per esperienza personale visto che proprio questo mi è successo con la mia app Acqua Alta)

Buona visione, e ricordate, per commenti o richieste particolari è preferibile usare il forum


...continua nella parte 2 dove vedremo come realizzare l'app con App Inventor...




89 commenti:

  1. raga ma la fonte da cui prendiamo le info in questo caso la classifica del campionato deve esserne a conoscenza? dobbiamo chiedere qualche permesso? o possiamo semplicemente utilizzare questi dati a nostro piacimento senza alcuna autorizzazione?

    RispondiElimina
    Risposte
    1. buona domanda, io di solito nella mia app scrivo da dove ho preso i dati e ringrazio il fornitore di essi. Credo che se non ci sono specifiche clausole scritte esplicitamente sul sito si possano usare senza grossi problemi.

      Elimina
  2. ciao si vede male il video dove posso trovare la sintassi per la tabella

    RispondiElimina
    Risposte
    1. Ciao seba volevo solo la sintassi per leggere il mio foglio excel grazie

      Elimina
  3. Ciao Seba,
    ho usato la formula che usi tu per importare la classifica dal sito del corriere ma a me dà "errore di analisi" e pure è la stessa url che hai usato tu e la stessa formula, cosa può essere?

    Grazie

    RispondiElimina
    Risposte
    1. hai provato con questa formula (esattamente quella che uso nell'excel)
      =ImportHtml("http://www.corrieredellosport.it/live/SerieA/classifica.shtml","table",0)

      altrimenti guarda il mio excel a questo indirizzo:

      https://docs.google.com/spreadsheet/ccc?key=0AhHg0fjQtiz2dFl5UnUwamVHZEQtN2ZkanFPN0c5anc

      magari hai fatto qualche semplice errore di punteggiatura...

      Elimina
    2. Ciao Silverio la sintassi corretta è:
      =ImportHtml("http://www.corrieredellosport.it/live/SerieA/classifica.shtml"; "table";0)

      Elimina
  4. ciao seba,
    oltre alle tabelle in html, si possono inserire dati di quelle in pdf? invece, se voglio fare una tabella con i dati che continuano ad "auto-aggiornarsi" con fonte un sito o un file specifico, è fattibile farlo? soprattutto per me che sono alle primissime armi con la programmazione?
    grazie!

    RispondiElimina
  5. No, la fonte per usare la funzione di google docs deve essere im html
    Se pubblichi poi la tabella come faccio vedere nel video ad ogni cambiamento nel sito d'origine ti si aggiorna in automatico anche il google docs
    Infatti se vedi hai sempre la classifica di serie A aggiornata in questo esempio

    RispondiElimina
  6. Ciao seba, volevo farti una domanda su come creare una classifica online, cosa mi consigli di usare? riuscirei ad inviare dei dati dall'app ad un foglio di lavoro qualsiasi e dopo riprenderli, magari anche in ordine? ho provato con le fusion tables ma l'utente deve per forza essere "registrato", quindi o mi manda tipo l'email e io lo metto dentro ma mi pare poco adatto allo scopo, qual'è la funzione migliore che mi consigli di usare? grazie mille per la risposta e continua così che il sito è stupendo e senza probabilmente avrei abbandonato app inventor!

    Grazie ancora,

    Mario :-)

    RispondiElimina
    Risposte
    1. Ciao Mario, non mi sono cimentato in questo documento ma credo possa fare al caso tuo:
      http://puravidaapps.com/taifunGS.php

      in pratica si può scrivere nel google docs, poi con questo tutorial o qualcosa di simile puoi leggere i tuoi dati, il google spreadsheet è pubblico e quindi dovrebbe essere editabile da chiunque
      se sperimenti e funziona scrivi la tua esperienza nel forum !

      Elimina
    2. Grazie seba!!! :-D

      Se funziona è la prima cosa che faccio! :-D

      Elimina
    3. E sopratutto se riesco a capirlo...la vedo dura...:-)

      Elimina
  7. Ciao ma invece di selezionare a priori le 3 squadre non si può tramite l'app lasciare all'utente la possibilità di scegliersi i criteri da interrogare sulla classifica completa? grazie fabio

    RispondiElimina
    Risposte
    1. certo che è possible, io qui mostro solo un esempio, usando delle textbox e poi passando questi dati alla "select" si può fare più o meno quel che si vuole (dire di quante squadre si vuole la classifica, cercare la posizione in classifica di una squadra in particolare, etc...)
      prova a scaricarti il sorgente e modificarlo a piacere per impratichirti

      Elimina
  8. Il notifier a me non funziona, quando non ho accesso alla rete non esce il messaggio strutturato, ma scrive error 1101

    RispondiElimina
  9. Questa applicazione è ORO per me!!!
    Qualcuno di voi sa dove trovare la sorgente delle estrazione del lotto?

    RispondiElimina
    Risposte
    1. esistono svariati siti, devi fare un pò di prove e trovare uno che inserisce i risultati in una bella tabella html :) buona caccia :)

      Elimina
  10. A me non si aggiorna il foglio in cui ho messo una tabella, è normale?

    La tabella da cui prendo i dati in media si aggiorna ogni minuto, però solamente se refresho la pagina.

    Il foglio collegato invece con la funzione vista in questo tutorial rimane invariato, come mai?

    RispondiElimina
    Risposte
    1. mi pare ci sia una spunta in google docs dove si dice se deve ripubblicare il foglio ad ogni refresh dei dati, prova a guardare se tu hai spuntato quell'opzione

      Elimina
    2. Scusa Sebastiano, visto che ho un problema simile (il sito si aggiorna in tempo reale mentre il mio foglio no) potresti essere più chiaro su questo punto?
      Come faccio ad imporgli di aggiornarsi in tempo reale in fuzione delle fonte dati?
      Grazie

      Elimina
  11. secondo voi si può fare anche prendendo i dati dalle fusion tables??

    RispondiElimina
    Risposte
    1. penso di si, se pubblichi la fusion table come html e poi usi lo stesso metodo...
      ma perchè vorresti fare una cosa del genere? non è più semplice a questo punto caricare i dati con il componente fusion table direttamente?

      Elimina
  12. ma si possono anche caricare gli java script?

    RispondiElimina
    Risposte
    1. non con questo metodo, alcune cose in javascript sono supportate caricando il file con il javascript come asset nell'applicazione, per ulteriori informazioni puoi guardare questo sito in inglese molto interessante:

      http://puravidaapps.com/tutorials.php#html

      Elimina
    2. ma si può caricare un immagine presa dalla sdcard per poi visualizzarla nella app io ho provato facendo cosi (
      screen initialize
      image .Picture TO= text= /sdcard/AppInventor/assest/Foto.pgn

      Elimina
    3. si, è possibile ma il path che hai inserito non mi sembra corretto, ovviamente deve essere specificato in maniera corretta per esempio
      file:///mnt/sdcard/pictures/foto.png

      se vuoi vedere il path corretto metti un componente imagepicker e scegli la tua immagine, poi visualizza il path che ti ritorna l'imagepicker (o usa una finestra di watch da blocks editor)
      così hai il path corretto al 100% (ricorda anche di mettere file:/// all'inizio)

      Elimina
  13. Scusami sebastiano se io vorrei applicare il procedimento di importazione HTML ma invece della classifica della serie A o etc.. io lo modificassi di mano mia cioè andrei nello Spreadsheet e cambierei il testo questo è possibile?

    RispondiElimina
    Risposte
    1. Certo, anzi è ancora più semplice perchè non serve che crei lo spreadsheet con la funzione importHTML ma scrivi direttamente li i tuoi dati e poi li leggi da App Inventor

      Elimina
  14. Ciao sebastiano,
    non riesco a capire quale è la stringa (link) da inserire per visualizzare la mia Query in HTML
    Ti riporto il mio foglio condiviso
    (https://docs.google.com/spreadsheet/ccc?key=0AuNtE3H3Pct_dGlYaGtOSUdYVGl1NHJfSUZkX1V3RHc#gid=1)

    inserisco questa:
    https://spreadsheets.google.com/tq?tqx=out;html&tq=select%20*%20limit%2020&key=0AuNtE3H3Pct_dGlYaGtOSUdYVGl1NHJfSUZkX1V3RHc

    ma mi esce un errore
    potresti aiutarmi a risolverlo?
    Grazie
    Saluti,
    Fabio


    RispondiElimina
    Risposte
    1. l'errore è dato dal fatto che metti la query (ovvero il pezzo con &tq=...) prima dell'identificativo del tuo foglio di lavoro (quindi prima di &key=...) invertendo i due pezzi risolvi e la tua query sarà così formata:

      https://spreadsheets.google.com/tq?tqx=out:html&key=0AuNtE3H3Pct_dGlYaGtOSUdYVGl1NHJfSUZkX1V3RHc&tq=select%20*%20limit%2020

      per caso nel video dico che fa lo stesso l'ordine di tq e di key? perchè magari ho commesso io un errore, fammi sapere ciao

      Elimina
    2. Perfetto ora, Grazie!!!
      Un errore da neofita di AppInventor :)!
      Grazie ancora.
      Se avro' qualche altro problema sono sicuro di poter contare su di te!

      PS. C'è invece un modo per estrapolare solo una parte testo dall'HTML di una pagina Web?

      Elimina
    3. dipende, se è tra due tag html ben specifici puoi caricare tutta la pagina e poi con le funzioni testuali estrarre solo il testo tra i due tag,
      altrimenti è più complicato se non sai dove inizia e dove finisce, insomma dipende tutto da come è fatta la pagina html, devi analizzarla per bene ed agire di conseguenza... :)

      Elimina
  15. SEGNALAZIONE

    La pagina che usi nel tutorial è stata aggiornata e percio non funziona più il comando spreedsheet per l'importazione della table

    RispondiElimina
    Risposte
    1. grazie per la preziosa segnalazione! penso che stiano sistemando le cose per la stagione 2013/2014,
      appena inizia il campionato vediamo di sistemare con una nuova tabella funzionante o di sistemare la cosa,grazie!

      Elimina
  16. ciao Seba,
    ti vorrei chiedere se posso importare il link ,di un sito, da un csv ed impostarlo come dataUri dell'ActivityStarter.
    grazie

    RispondiElimina
    Risposte
    1. se ho capito quello che vuoi fare ti direi di si,
      cioè tu vuoi avere un file csv che leggi con App Inventor,
      ed in questo csv memorizzi dei link che poi apri con ActivityStarter,
      si la cosa è fattibile, basta che appunto tu dia come dataUri l'url letto dal file csv

      Elimina
  17. Ciao scusa mi sono perso un passaggio banalissimo ma non ne vengo fuori!!!
    Di sicuro è una cosa stupida ma come ottengo l'indirizzo https://spreadsheets.google.com/tq?tqx=out:html&key=0AuNt....
    partendo dal file su GDrive?
    grazie

    RispondiElimina
    Risposte
    1. Quando sei su drive scegli, "File" e poi "Pubblica sul web" a quel punto ti si apre la maschera con le opzioni per recuperare l'indirizzo del foglio di lavoro in formato csv

      Elimina
    2. Ho provato ma dalla maschera continua a darmi indirizzi https://docs.google.com/spreadsheet/ccc?key=0AhoTd1GAhIA0dFZ5QX...
      Comunque ho risolto scrivendomelo manualmente, ma provando l'applicazione mi ricarica continuamente la pagina come se ogni due secondi la aggiornasse.
      A differenza tua ho sostituito il click del bottone con lo screen initialize ma per il resto è identica!
      Sai a cosa potrebbe essere dovuto?
      grazie

      Elimina
    3. nelle opzioni devi dare il tipo di export in csv, forse è per quello che non ti esce l'indirizzo corretto per il foglio di lavoro,
      anche il fatto che ti ricarica continuamente la pagina è molto strano, se in screen initialize metti la get del componente web e poi processi i dati con la web gottext l'evento gottext deve essere generato una volta sola,
      ricontrolla bene il tutto magari scarica il mio sorgente e fai dei confronti, se ancora avessi problemi se vuoi vieni nel forum e posta li i blocchi così io ed altri possiamo darci un occhiata.
      Ciao

      Elimina
    4. Risolto il problema dell'aggiornamento continuo.
      Per il link dal foglio dati faccio File->Pubblica sul Web->Avvia pubblicazione e nella maschera "Ottieni link ai dati pubblicati" metto CSV ma il link è: https://docs.google.com/spreadsheet/pub?key=0AhoTd1GAhIA0dFZ5QXpabm5ERm43MXk1anlKQ3d5VkE&output=csv

      Elimina
    5. Ok, mi pare vada bene, a quel link vedo la classifica di serie A in formato .csv così come da tutorial,
      non capisco dove sia il problema? riesci a spiegarti meglio?

      Elimina
  18. https://docs.google.com/spreadsheet/pub?key=0AlSF7MwJfI-xdGM4eDdPU3JYNUJLZGR6bXBkV3hQcHc&single=true&gid=0&output=html

    perche' mi compaiono miliardi di informazioni quando io invece voglio solo la tabella??

    RispondiElimina
    Risposte
    1. https://docs.google.com/spreadsheet/pub?key=0AlSF7MwJfI-xdGM4eDdPU3JYNUJLZGR6bXBkV3hQcHc&single=true&gid=0&output=csv

      prova con questo (ovvero fa l'export in csv), salvalo sul disco come file di testo e poi dacci un occhiata
      devi sistemare il simbolo dell'euro (almeno mi pare), cmq dipende da come gli dici tu di fare l'export
      Per il resto direi che puoi seguire questo tutorial per vedere come continuare, in bocca al lupo!

      Elimina
  19. risolto pero' non capisco perchè nell'app si vede un'odiosa strisciata bianca a destra della tabella in html...

    risolto questo avro' finito

    la mia tabella : https://docs.google.com/spreadsheet/pub?key=0AlSF7MwJfI-xdGEtSlcyUlZwQWVyV3h4UzV6WUZFVGc&output=html

    RispondiElimina
    Risposte
    1. Usi la webview o il componente web per prendere i dati?
      Se vuoi fare una cosa più pulita (ma anche più laboriosa) ti consiglio componente web ed import dei dati in csv,
      se usi la webview rischi di avere piccoli problemi (come la striscia bianca di cui parli) ma la creazione dell'app è più veloce
      vedi te...in bocca al lupo!!!

      Elimina
  20. uso la webview... non riuscirei a farlo nel modo in cui dici te .. devo studiarlo mi pare piu' complicato

    RispondiElimina
    Risposte
    1. Ok, cmq ti consiglio di studiarti anche l'altro metodo, hai molta più flessibilità nella gestione del layout della tua app, in bocca al lupo!

      Elimina
  21. ciao seba ho provato a seguire il tuo consiglio ma zero appena clicco sul pulsante l'app non fa niente di niente e pensare ke ho inserito 248 label visto che l'app deve inserire 4 colonne di valori fatte da 62 elementi.

    i blocchi del block editor sn come i tuoi precisi ma niente ... :(

    RispondiElimina
  22. e pensare che e' pure piu' semplice della tua visto ke devo portare a video tutti i dati del foglio csv quindi nessuna select ed evito pure il controllo della mancata connessione ... mah e' assurdo veramente

    RispondiElimina
    Risposte
    1. mi dispiace essere così "diretto" ma sicuramente sbagli qualcosa,
      se leggi col componente web i dati te li ritrovi poi in formato grezzo e li puoi poi caricare come meglio credi nelle varie label.
      Prova con le finestre di watch a controllare dopo che viene eseguita la http get che valori ti ritorna il componente web e poi continui da li,
      quando importi il csv con il componente web hai i dati separati da virgole, devi quindi trasformare poi questi dati da un csv a una lista (con il metodo "list from csv") e poi selezionare per ogni label la riga e la colonna da visualizzare.
      Insomma, è difficile da scriverlo qui ma il procedimento in linea di massima è quello, in bocca al lupo!

      Elimina
  23. Ciao posso farla anche se ho un database Tinyweb dove ho una cella con (nome utente e valore: punteggio) ?

    RispondiElimina
    Risposte
    1. Se hai un db TinyWebDb puoi leggere i dati col componente TinyWebDB, risulta anche più semplice.
      Questo indicato qui è invece un ottimo metodo per fare scraping dei dati da siti internet non nostri e che quindi non possiamo "formattare" a nostro piacimento.

      Elimina
  24. Ok, ti spiego il mio problema,nel tinyweb viene registrati come tag il nome utente mentre come value registro il punteggio.
    Quindi come dovrei richiamare tutti i giocatori e sviluppare una classifica?
    Spero di essere stato chiaro

    RispondiElimina
  25. Ciao sebastiano volevo domandarti se io vorrei che il mio utente vuole importare dalla tabella solo alcune righe a suo piacimento tipo "ricerca" come faccio?

    RispondiElimina
    Risposte
    1. mi spiego meglio

      utente parla con l'app

      Utente: domanda cara mia app mi interessano solo le caramelle che sono alla liquirizia ( utente scrive nelle Test box caramelle liquirizia)

      App: ok le carico dalla tabella ecco sono 5 tipologie dalle piu belle alle meno belle.

      Elimina
    2. Ti conviene usare la sintassi SQL (https://developers.google.com/chart/interactive/docs/querylanguage) per interrogare il tuo foglio di lavoro e farti restituire solo le righe in cui ad esempio il tipo di caramella è alla liquirizia.
      In pratica modifichi la query Select ed invece di * metti il filtro che ti ho spiegato sopra.
      Devi sapere un pò di SQL per farlo, in internet trovi un sacco di tutorial a riguardo, buon app inventing!

      Elimina
    3. e se uso lo stesso sistema che usi in questo tutorial tu pensi che funzioni? http://seblogapps.blogspot.it/2013/08/tutorial-54-ricercare-dati-allinterno.html
      utilizzando al posto del DB rubrica importando da una tabella "html"?

      Elimina
    4. Certo, tutto nel mondo del sw funziona, basta che sia programmato correttamente :)
      nel caso della ricerca devi creare una lista bidimensionale, quindi dall'html devi creare un tinydb che contenga una lista bidimensionale, poi puoi fare tutte le ricerche che vuoi con il metodo evidenziato.
      Cmq resto dell'idea che per il tuo scopo è meglio usare una semplice query SQL
      ciao

      Elimina
    5. perkè? "scusa la domanda impertinente" :)

      Elimina
    6. secondo me è più veloce e semplice, ecco perchè
      ma io non so cosa stai facendo, come è strutturata la tua app e tante altre cose,
      la decisione finale è tua
      io ti ho solo dato la mia opinione :)

      Elimina
    7. una domanda vorrei farti caro il mio Seba ma se carico da html posso pure caricare immagini in modo da visualizzare nell'app un menu completo?

      Elimina
    8. non è esattamente così, non puoi caricare immagini direttamente dal file html,
      quel che puoi fare è memorizzare nelle celle dell'html il nome o il path delle immagini,
      poi carichi questo path in una variabile di App Inventor ed imposti la proprietà picture della tua immagine al valore che hai prelevato dalla tabella html...
      Quindi supponi che la tua tabella abbia nella colonna a i valori testuali
      http://www.google.it/immagine1.jpg
      http://www.google.it/immagine2.jpg
      ...
      carichi la tabella come in questo tutorial , verrà caricata in forma testuale ma poi nella tua app imposterai appunto la proprietà picture al valore caricato dalla tua tabella, in tal modo ti apparirà l'immagine voluta...
      spero di essermi spiegato... :)

      Elimina
    9. Ciao Seba ho realizzato parte di quest'app

      Funziona cosi:

      All'apertura lo Screen1 carica i dati presenti nella mia pagina Html.

      Li carica in una tabella Di label

      con Foreac faccio una ricerca per testo

      e li carico in csv nelle label risultatoricerca.text
      ____________________________________

      fino a qui ci sono ora volevo solo caricare il risultato della label "risultatoricerca." in una tabella formata da label
      posso chiederti un piccolo aiuto? come faccio o hai dei tutorial su come posso imparare?

      ecco la sorgente della mia App https://drive.google.com/file/d/0BxngC48G-rM4SkRwMHN1TUkydTA/edit?usp=sharing

      Grazie ancora della tua disponibilità.

      Elimina
  26. Ciao, puoi usare da palette "list" la funzione - list from csv row - che ti crea una variabile di tipo lista appunto con i tuoi valori presi dal csv
    a questo punto devi creare tante label quanti sono i tuoi valori ed assegnare ad ognuno di essi il dato relativo con la select list item (cambiando l'indice di volta in volta)
    mi dispiace ma ora non posso vedere cosa hai fatto, cmq spero che con gli input di qui sopra tu possa andare avanti!

    RispondiElimina
  27. Ciao Seb,
    come faccio a leggere un file su internet ogni 10 secondi per esempio?
    In modo automatico, senza premere pulsanti.
    Avevo pensato all'utilizzo di un clock o di un loop, ma non saprei come fare.
    Puoi suggerirmi qualcosa?

    Grazie di tutto, sei fortissimo!

    RispondiElimina
    Risposte
    1. Esatto, devi usare l'elemento clock a cui dai valore dell'intervallo pari a 10 secondi (per esempio)
      all'evento Clock1.Timer fai partire la chiamata alla Web1.Get per caricare i valori aggiornati da internet
      in pratica metti quello che nel tutorial vedi sotto l'evento button.click in clock1.timer
      in bocca al lupo!

      Elimina
    2. Sei un grande!
      Praticamente era una cavolata (si vede che mi mancano le basi :P)
      Ecco quello che necessitavo, mi mancava solo questo:
      "all'evento Clock1.Timer fai partire la chiamata alla Web1.Get per caricare i valori aggiornati da internet"

      Elimina
  28. Salve Sebastiano, Ripubblico la domanda perchè non la vedo...se c'è già chiedo scusa...

    il mio doc ha indirizzo: https://docs.google.com/spreadsheets/d/1YYbrmn4nOhipPHpmyXM3tj2qwvZKFiuvrkIr-Af2WJM/edit#gid=0

    non vedo il key da inserire in: https://spreadsheets/google.com/tq?tqx=out:html&tq=select20%*&key=

    ho provato ovviamente ad inserire per esempio: https://spreadsheets/google.com/tq?tqx=out:html&tq=select20%*&key=1YYbrmn4nOhipPHpmyXM3tj2qwvZKFiuvrkIr-Af2WJM

    ma niente la pagina mi da errore...

    Mi daresti qualche indicazione ? GRAZIE!!!

    RispondiElimina
    Risposte
    1. scusami il link giusto è: https://spreadsheets.google.com/tq?tqx=out:html&tq=select20%*&key=
      ma non va lo stesso....grgrggrrggrrgrgrgrr

      Elimina
    2. ciao ho lo stesso tuo problema... come posso risolverlo?

      Elimina
  29. Per chi vende prodotti, c'è la possibilità di inserire nell'app i pulsanti "aggiungi al carrello" e/o "paga adesso" di paypal? Se si, mi potreste per favore indicare come fare, oppure se esiste un tutorial, perchè non lo ho trovato ne su questo blog (complimenti all'autore per i tutorial) e ne altrove. Grazie mille davvero

    RispondiElimina
    Risposte
    1. Secondo me ti conviene guardare altrove, a meno che non vuoi usare app inventor ed il componente webviewer per visualizzare il tuo sito di e-commerce.
      Infatti quello che chiedi non esiste come componente dedicato in app inventor, ed a meno di voler realizzare tutta l'infrastruttura del negozio online tramite AI (molto difficile) penso ci siano soluzioni più semplici (tipo altri programmi appositi)
      Se invece vuoi solo inserire un pulsante paga adesso di paypal con un importo fisso, puoi farlo creando il pulsante html ed aggiungendo il codice ad un button su AI e con un activitystarter fai partire il browser all'indirizzo corretto relativo al pulsante (tutto il codice html lo devi generare tramite il sito paypal)

      Elimina
    2. Quali soluzioni apposite mi consiglieresti Sebastiano? Riguardo al pulsante, li inserisco sul sito generando il codice html dal sito paypal e poi lo integro nel sito, lo stesso codice dello stesso pulsante, funziona su app inventor? Hai preso solo come esempio il pulsante "paga adesso" o funziona solo con questo e con "aggiungi al carrello" non funziona? Purtroppo ora sono fuori città e non posso provare. Non vedo l'ora di rientrare per fare subito delle prove. Questa teoria che stò apprendendo dalle ricerche e dalle risposte date da esperti come te, è davvero utile. Grazie mille davvero

      Elimina
    3. Ci ho provato, ma non riesco proprio a farlo, sono nuovo di questo bel mondo delle app e te ne sarei grato se mi spiegassi la procedura. In rete non si trova nulla di come associare codice html ad un button e farlo poi partire come dicevi tu. Te ne sarò giustamente riconoscente e non solo ringraziandoti.

      Elimina
    4. Nessuna risposta? E vabbè che dire, grazie lo stesso. Ciao

      Elimina
    5. Ciao Roger, mi risulta difficile aiutarti così in poche righe, e penso cmq che quel che chiedi non sia facilmente realizzabile con AI.
      Per far partire l'activity starter con il browser predefinito (quindi con activity starter) puoi vedere altri tutorial per impratichirti di più con AI, fai tutti i tutorial base di AI2 e poi se ancora non hai capito come fare prova a contattarmi in privato tramite mail.

      Elimina
  30. Buon giorno,
    innanzitutto grazie, anche se lo dicono tutti, ma il tuo aiuto per addentrarsi in questo ambiente di sviluppo mi ha guidato nelle prime esperienze in modo professionale e dettagliato.
    Volevo chiederti un aiuto in questo; mi dedico anche allo sviluppo web con visual studio e programmazione code-behind in vb, Volevo creare una app di interfaccia con il sito, per cui se sei registrato indichi Username e Password ed entri. In pratica i dati sono memorizzati in in un DB di Acces sul sito e c'è una pagina aspx che mi legge i dati degli utenti (Username, Password, ecc). Ho collegato uno spreadsheets di Google con quella pagina e mi estrae i dati correttamente, ma se inserisco un nuovo utente (nell'app ti puoi anche registrare) il foglio di Google non si aggiorna in automatico. Su l'help del grande G suggeriscono di indicare una querystring aggiuntiva all'IMPORTHTML (del tipo pippo.aspx?Minute(now)), ma se inserisco un nuovo utente, la pagina aspx si aggiorna, ma il foglio no. Cosa mi puoi suggerire ?
    Ti ringrazio.

    RispondiElimina
  31. ciao seba... con i nuovi aggiornamenti google non c'è piu il 'key', mi dai qualche dritta per usare lo stesso metodo che da solo non riesco

    RispondiElimina
    Risposte
    1. Mi sembra strano che non ci sia più la key, mi daresti il minuto del video esatto dove parlo della key, così vedo se è cambiato qualcosa...
      grazie

      Elimina
    2. questo è quello che mi esce :
      https://docs.google.com/spreadsheets/d/1EMIRvFEXN9fU6IqEUbVb0Oa_vFXmJDH9JCHFbSLwmvc/edit?usp=sharing

      Elimina
    3. Se parli della pagina della gazzetta, è cambiata da quando ho fatto il tutorial, per quello che forse non ti funziona più . Però il concetto non cambia, e nel tuo caso la chiave per lo spreadsheet è "1EMIRvFEXN9fU6IqEUbVb0Oa_vFXmJDH9JCHFbSLwmvc"

      Non sono sicuro di aver capito quello che mi stai chiedendo...prova a riformulare la domanda eventualmente, grazie

      Elimina
    4. risolto, adesso avrei bisogno di inerire in uno screen una sezione che possa aggiornarsi automaticamente: dovrei creare la pagina "news" e fare in modo che ogni volta che sia acceda possa esserci un'immagine e una descrizione, il dilemma è: come faccio a fare il modo che si aggiorni da sola? (si può usare un foglio di lavoro google drive anche con le immagini?)

      Elimina
  32. Ciao ho iniziato da poco ad usare mit appinventor2. Vorrei farti una domanda.
    Ho una schermata che importa una tabella che verra' completata da un inserimento utente.
    Ad inserimento avvenuto non trovo come dire all app di passare alla riga sucessiva. Potresti darmi un idea? Grazie.

    RispondiElimina