Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

leggere gmail inbox senza Outlook

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

leggere gmail inbox senza Outlook

Postdi patel » 30/08/19 10:31

E' possibile con excel ? sono in grado di spedire email ma non di leggerle.

un modo potrebbe essere questo https://developers.google.com/gmail/gmail_inbox_feed ma non sono capace di estrarre i dati
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Sponsor
 

Re: leggere gmail inbox senza Outlook

Postdi patel » 10/09/19 07:33

Non è possibile ? troppo complicato per perderci tempo ? come mai nessuna risposta ?
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 10/09/19 12:11

come mai nessuna risposta ?
Eh he, io sono fedele al motto che quando non si sa cosa dire e' meglio tacere... Anzi ero rimasto in attesa di un tuo "eureka!"

Inizialmente pensavo di suggerirti di valutare il tool EAGetMail (https://emailarchitect.net/eagetmail/kb/vb.aspx), ma ho pensato che di ricerche on line ne avessi gia' fatto in abbondanza.
Quanto al tool che tu indichi, viene dichiarato disponibile "for Gmail accounts on G Suite domains"; cosa sia G Suite non lo so, ma la versione Basic viene offerta a 5.20 €/mese/Utente
Inoltre ti serve una Google GMail ApiKey, che e' praticamente gratuita per gli esperimenti (poche operazioni) ma puoi ottenere solo dopo aver autorizzato google a fatturare i servizi che userai; e potrai estrarre il feed dei messaggi solo dopo esserti autenticato tramite lo strumento OAuth (https://developers.google.com/identity/ ... ls/OAuth2).
Infine, una volta ottenuto il feed di email in formato xml sarebbe facilmente possibile estrarre i singoli campi, come valore dei singoli "nodi" del documento. Su quest'area sarei in grado di aiutare (si tratta di fare il parsing di un file xml; vedi viewtopic.php?f=26&t=110596#p649319); sugli altri temi non ho invece non ho nessuna esperienza.

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi patel » 11/09/19 16:42

Scusami, ho inserito un link errato, quello corretto è https://mail.google.com/mail/u/1/feed/atom, da browser vedo le mail non lette in formato xml, ma non so accedere da excel e come fare il parsing. Un esempio:
<feed version="0.3"><title>Gmail - Inbox for pippo@gmail.com</title><tagline>New messages in your Gmail Inbox</tagline><fullcount>5</fullcount><link rel="alternate" href="https://mail.google.com/mail/u/1" type="text/html"/><modified>2019-09-11T15:08:03Z</modified><entry><title>5€ di sconto su Just Eat con PayPal</title><summary>Pippo – Ordina il pranzo o la cena online e risparmia Vedi online IL BELLO È PRENDERCI GUSTO IL BELLO È PRENDERCI GUSTO Il bello di Just Eat è… ordinare quello che vuoi, quando vuoi! Pizza,</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=PIPPO@gmail.com&message_id=16d209208faec25d&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-11T13:45:04Z</modified><issued>2019-09-11T13:45:04Z</issued><id>tag:gmail.google.com,2004:1644386849397850717</id><author><name>PayPal</name><email>paypal@mail.paypal.it</email></author></entry><entry><title>Ehi, ci sono punti EXTRA che aspettano solo te ></title><summary>Usa i coupon PAYBACK Adventure! Se non visualizzi correttamente questo messaggio, clicca qui Aggiungi newsletter@payback.it ai tuoi contatti Scarica l'APP Ciao Pippo Nr. Carta 12345 - 111</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d203245946dbec&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-11T12:00:28Z</modified><issued>2019-09-11T12:00:28Z</issued><id>tag:gmail.google.com,2004:1644380268595174380</id><author><name>PAYBACK per Pippo</name><email>newsletter@payback.it</email></author></entry><entry><title> Vedi il messaggio di Lori e altre notifiche che non hai visto</title><summary>Sono successe molte cose su Facebook dall'ultima volta che hai effettuato l'accesso. Ecco alcune notifiche relative ai tuoi amici che ti sei perso. Grazia 2 messaggi 16 aggiornamenti di</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d1c1f2aaa88dea&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-10T17:01:07Z</modified><issued>2019-09-10T17:01:07Z</issued><id>tag:gmail.google.com,2004:1644308586956361194</id><author><name>Facebook</name><email>notification@facebookmail.com</email></author></entry><entry><title>Paolo ha pubblicato qualcosa in QUELLI CHE IN CACIAIA....</title><summary>Paolo ha condiviso una foto in QUELLI CHE IN CACIAIA.... 9 settembre alle ore 22:34 Ieri mattina ore 7.00 ad Antignano Mi piace Commenta Condividi Facebook Paolo ha condiviso una foto</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d17bc47e41db69&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-09T20:34:37Z</modified><issued>2019-09-
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi patel » 11/09/19 17:01

una versione più ridotta
Codice: Seleziona tutto
<feed version="0.3"><title>Gmail - Inbox for pippo@gmail.com</title><tagline>New messages in your Gmail Inbox</tagline><fullcount>3</fullcount><link rel="alternate" href="https://mail.google.com/mail/u/1" type="text/html"/><modified>2019-09-11T15:37:27Z</modified><entry><title>Ehi, ci sono punti EXTRA che aspettano solo te ></title><summary>Usa i coupon PAYBACK Adventure! Se non visualizzi correttamente questo messaggio, clicca qui Aggiungi newsletter@payback.it ai tuoi contatti Scarica l'APP Ciao pippo Nr. Carta 12345 - 108</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d203245946dbec&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-11T12:00:28Z</modified><issued>2019-09-11T12:00:28Z</issued><id>tag:gmail.google.com,2004:1644380268595174380</id><author><name>PAYBACK per Andrea</name><email>newsletter@payback.it</email></author></entry><entry><title> Vedi il messaggio di Lori e altre notifiche che non hai visto</title><summary>Sono successe molte cose su Facebook dall'ultima volta che hai effettuato l'accesso. Ecco alcune notifiche relative ai tuoi amici che ti sei perso. Grazia 2 messaggi 16 aggiornamenti di</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d1c1f2aaa88dea&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-10T17:01:07Z</modified><issued>2019-09-10T17:01:07Z</issued><id>tag:gmail.google.com,2004:1644308586956361194</id><author><name>Facebook</name><email>notification@facebookmail.com</email></author></entry><entry><title>Paolo ha pubblicato qualcosa in QUELLI CHE IN CACIAIA....</title><summary>Paolo ha condiviso una foto in QUELLI CHE IN CACIAIA.... 9 settembre alle ore 22:34 Ieri mattina ore 7.00 ad Antignano Mi piace Commenta Condividi Facebook Paolo  ha condiviso una foto</summary><link rel="alternate" href="https://mail.google.com/mail/u/1?account_id=pippo@gmail.com&message_id=16d17bc47e41db69&view=conv&extsrc=atom" type="text/html"/><modified>2019-09-09T20:34:37Z</modified><issued>2019-09-09T20:34:37Z</issued><id>tag:gmail.google.com,2004:1644231422828993385</id><author><name>Facebook</name><email>notification@facebookmail.com</email></author></entry></feed>
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi patel » 11/09/19 17:35

chiedo ancora scusa, il link per un solo account è https://mail.google.com/mail/u/0/feed/atom
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 12/09/19 16:41

Allora, ho visto che con l'ultimo tuo link riesci a ricevere un feed RSS con i campi chiavi delle tue email.
Purtroppo le definizioni dei file rss sono "tipo xml", ma non sono well-formed secondo la sintassi xml. Puoi provare verificando la correttezza del file ad esempio qui: https://www.xmlvalidation.com/

Di conseguenza il parsing del siffatto file utilizzando la libreria Microsoft Xml fallisce

Le irregolarita' formali riguardano tutte le linee aventi come tag <link rel="alternate" href="https://etc etc, es:
Codice: Seleziona tutto
<link rel="alternate" href="https://mail.google.com/mail/u/0?account_id=PIPPO123@gmail.com&message_id=16d3333e541d1471&view=conv&extsrc=atom" type="text/html"/>

In questi casi un validatore risponde: The reference to entity "message_id" must end with the ';' delimiter.

Eliminando dal file tutti i tecord di quel tipo (che, per inciso, sono gli hyperlink che puntano al messaggio, cioe' che consentirebbero di aprire poi il vero corpo della mail) il file diventa finalmente well-formed e puo' essere "lavorato".

Ho ottenuto qualcosa di presentabile partendo da quanto realizzato per l'utente ALESSIO9899 (discussione gia' linkata):
1) Ho creato un foglio contenenti su riga 1 i nodi da estrarre, che in prima battuta sono
entry/title
entry/summary
entry/author/email
entry/issued
entry/link#href

2) Partendo dalla Sub XMLParseMulti, cominciamo a definire il Nodo Principale:
MasterN = "//feed" '<<< Nodo principale

3) La Sub XMLParseMulti parte dal presupposto che su disco ci siano dei file xml, che la macro suddivide secondo i nodi cercati (quelli su riga 1)
Noi invece quel file lo dobbiamo scaricare facendo una XMLHTTPRequest al server google.

4) Poiche' il file xml e' "mal-formed" bisogna ripulirlo; essenzialmente si tratta di eliminate i tag <link>, ma e' emersa anche la necessita' di un riallineamento dei tag <entry>

5) Infine, utilizzando il cuore della Sub XMLParseMulti vengono estratti i testi dei nodi cercati

6) Il tutto e' inserito nella nuova Sub XMLParseGMail che trovate in Modulo4 del file scaricabile, il cui codice qui riporto:
Codice: Seleziona tutto
Sub XMLParseGMail()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=110777
'Derivata da http://www.pc-facile.com/forum/viewtopic.php?f=26&t=110596
' ..........................................................................
'   >>>>> Richiede il riferimento alla libreria Microsoft XML <<<<<<
'   in Menu /Strumenti /Riferimenti, cercare "Microsoft XML V.xx" e Spuntarla
' ..........................................................................
'
Dim MasterN As String, mySplit, myNext As Long
Dim xmlDoc As Object, I As Long
Dim cNCnt As Long, CipCiop As Object

Dim Request         As New XMLHTTP30
Dim myRic As String

MasterN = "//feed"                      '<<< Nodo principale
'
Set xmlDoc = New MSXML2.DOMDocument
'
myRic = "https://mail.google.com/mail/u/0/feed/atom"
Request.Open "GET", myRic
Request.send
Do Until Request.readyState = 4
    Debug.Print Timer, Request.readyState
    DoEvents
Loop
   
    xmlDoc.LoadXML Request.responseText
Dim Cioppa As String, lrPos As Long, eTagPos As Long

'Operazioni di pulizia del file xml:
Cioppa = Request.responseXML.XML
Cioppa = Replace(Cioppa, "<entry>", Chr(10) & "<entry>", , , vbTextCompare)
'Cioppa = Replace(Cioppa, " version=""0.3"" xmlns=""http://purl.org/atom/ns#""", "", , , vbTextCompare)  'inutile
Do
'elimina "<link "
    lrPos = InStr(1, Cioppa, "<link ", vbTextCompare)
    If lrPos = 0 Then Exit Do
    eTagPos = InStr(lrPos, Cioppa, "/>", vbTextCompare)
    If eTagPos > lrPos Then
    Debug.Print Mid(Cioppa, lrPos, eTagPos - lrPos + 2)
        Cioppa = Replace(Cioppa, Mid(Cioppa, lrPos, eTagPos - lrPos + 2), "", , , vbTextCompare)
    End If
DoEvents
Loop
'
'prima posizione libera nel foglio:
On Error Resume Next
myNext = 0
myNext = Range("A1:AZ10000").Find(What:="*", After:=Range("A1"), _
              SearchOrder:=xlByRows, _
              SearchDirection:=xlPrevious).Row
On Error GoTo 0
myNext = myNext + 1
'
xmlDoc.LoadXML (Cioppa)                                        'Carica xmlDoc
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column               'per ogni intestazione colonna
    For cNCnt = 0 To 1000
        If InStr(1, Cells(1, I).Value, "#", vbTextCompare) <> 0 Then        'Verifica se "attributo"
            mySplit = Split("/" & Cells(1, I).Value, "#", , vbTextCompare)  'Gestion Attributo
            If UBound(mySplit) > 0 Then
                If Len(mySplit(0)) < 3 Then mySplit(0) = ""
                Set CipCiop = Nothing
                On Error Resume Next
                    Set CipCiop = xmlDoc.SelectNodes(MasterN & mySplit(0))(cNCnt).Attributes.getNamedItem(mySplit(1))
                On Error GoTo 0
                If Not CipCiop Is Nothing Then
                    Cells(myNext + cNCnt, I) = xmlDoc.SelectNodes(MasterN & mySplit(0))(cNCnt).Attributes.getNamedItem(mySplit(1)).Text
                End If
                Debug.Print MasterN & mySplit(0) & "#" & mySplit(1), cNCnt, Cells(myNext + cNCnt, I)
            End If
        Else                                                                'Gestion ItemText
            Set CipCiop = Nothing
            On Error Resume Next
                Set CipCiop = xmlDoc.SelectNodes(MasterN & "/" & Cells(1, I).Value)(cNCnt)
            On Error GoTo 0
            If Not CipCiop Is Nothing Then
                Cells(myNext + cNCnt, I) = xmlDoc.SelectNodes(MasterN & "/" & Cells(1, I).Value)(cNCnt).Text
            End If
            Debug.Print MasterN & "/" & Cells(1, I).Value, cNCnt, Left(Cells(myNext + cNCnt, I), 80)
        End If
    If CipCiop Is Nothing Then Exit For
    Next cNCnt
DoEvents
Next I
'Fine:
Set xmlDoc = Nothing
MsgBox ("Completata importazione")
End Sub

Edit:
Vedere nuovo codice della macro nel post datato 14-set pomeriggio


Eseguendo la Sub XMLParseGMail ho ottenuto sul foglio Excel una decente sintesi:
-soggetto; testo; mittente; data

Il campo corrispondente all'intestazione entry/link#href (nodo entry/link, attibuto href) rimarra' vuoto perche' (come detto prima) quelle righe sono state eliminate in quanto non well-formed

Il file in cui ho fatto le prove e' scaricabile qui: https://www.dropbox.com/s/zgcm7bjbvyyuz ... .xlsm?dl=0

Contiene la Sub XMLParseGMail (piu' altre versioni presenti nella versione alessio9899) e le intestazioni di cui ho parlato.

E' possibile che avviando la Sub XMLParseGMail per la prima volta vi vengano chieste le credenziali di accesso all'account gmail; e' una iniziativa del server, non della macro.

Non so se e' di qualche utilita', io lo considero un esercizio ludico...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi patel » 12/09/19 18:08

Grazie Anthony, hai ragione, è un esercizio ludico e ti ringrazio per aver perso tempo per questo, comunque a me chiede utente e password per tre volte e non legge niente, cercherò di capire perché. Naturalmente ho abilitato le app meno sicure
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 12/09/19 19:16

A me viene questo:
Immagine

Hai mica l'autenticazione su tre livelli?

Per prova metti queste Debug.Print di debug nel codice della Sub XMLParseGMail:
Codice: Seleziona tutto
DoEvents
Next I
Debug.Print ">>>>...."
Debug.Print Cioppa
Debug.Print "....<<<<"
'Fine:
Set xmlDoc = Nothing

(le altre servono per identificare la posizione)

Esegui la Sub XMLParseGMail; poi vai nella finestra Immediata del vba (meglio se la svuoti prima di lanciare la macro): dovresti avere un log delle operazioni eseguite e, in coda, il contenuto del file xml su cui la macro ha lavorato. Supponendo che ce ne sia uno...
Prova a copiarlo in Notepad e salvarlo come file xml, poi controlla on line se il file e' "well-formed"

Se invece il file fosse vuoto o comunque non rappresentativo delle mail allora devi indagare "a monte".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi patel » 13/09/19 11:57

non so cosa sia l'autenticazione su 3 livelli, dopo la modifica suggerita ottengo
Codice: Seleziona tutto
 45303,05      1
 45303,05      1
 45303,05      1
 45303,05      1
 45303,05      1
 45303,05      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,06      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,07      1
 45303,08      1
 45303,08      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,09      1
 45303,1       1
 45303,1       1
 45303,1       1
 45303,1       1
 45303,1       1
 45303,1       1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,11      1
 45303,12      1
 45303,12      1
 45303,12      1
 45303,12      1
 45303,12      1
 45303,12      1
 45303,12      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,13      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45303,14      1
 45307,06      1
 45307,06      1
 45307,06      1
 45307,06      1
 45307,06      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,07      1
 45307,08      1
 45307,08      1
 45307,08      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,09      1
 45307,1       1
 45307,1       1
 45307,1       1
 45307,1       1
 45307,1       1
 45307,1       1
 45307,1       1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,11      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,12      1
 45307,13      1
 45307,13      1
 45307,13      1
 45307,13      1
 45307,13      1
 45307,13      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,14      1
 45307,15      1
 45307,15      1
 45307,15      1
 45307,15      1
 45307,15      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,16      1
 45307,17      1
 45307,17      1
 45307,17      1
 45307,17      1
 45307,17      1
 45307,17      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,18      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,19      1
 45307,2       1
 45307,2       1
 45307,2       1
 45307,2       1
//feed/entry/title           0           
//feed/entry/summary         0           
//feed/entry/author/email    0           
//feed/entry/issued          0           
//feed/entry/link#href       0           
>>>>....

....<<<<
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 13/09/19 12:24

Sembra che vada in timeout la Request.send.
Usando questo url con InternetExplorer tu ottieni risposta dal server?
Codice: Seleziona tutto
  "https://mail.google.com/mail/u/0/feed/atom"
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi patel » 13/09/19 16:17

Sì, ottengo risposta dal server anche subito dopo aver provato la macro, con IE vedo la posta in chiaro, con firefox vedo il codice xml
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 14/09/19 16:04

Sono a corto di idee...
Ho provato su 3 macchine diverse: Win 10 + Office 365; Win 10 + Office 2010; Win 7 + Office 365, e + Office 2003
Negli Office 365 il vba e' a livello 7.1 liv 1089; Office 2003 ha il vba 6.3 vers 1054; Office 2010 ha il vba 7.0 vers 1643

In tutte le 4 configurazioni mi ha importato la sintesi di 20 email; la prima volta mi chiesto account + password, poi sembrava li conoscesse gia'.

La Request e' stata sempre servita entro 1 sec (contro i 4 sec del tuo log)

Segnalo che ho modificato, nel file pubblicato, il codice della Sub XMLParseGMail per migliorare le informazioni registrate tramite debug.print, ma senza modificare la sostanza della macro. Ora e':
Codice: Seleziona tutto
Sub XMLParseGMail()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=110777
'Derivata da http://www.pc-facile.com/forum/viewtopic.php?f=26&t=110596
' ..........................................................................
'   >>>>> Richiede il riferimento alla libreria Microsoft XML <<<<<<
'   in Menu /Strumenti /Riferimenti, cercare "Microsoft XML V.xx" e Spuntarla
' ..........................................................................
'
Dim MasterN As String, mySplit, myNext As Long
Dim xmlDoc As Object, I As Long
Dim cNCnt As Long, CipCiop As Object, myTim As Single

'Dim Request As New XMLHTTP30
Dim Request As XMLHTTP30
Dim myRic As String

MasterN = "//feed"                      '<<< Nodo principale
'
Set Request = New XMLHTTP30
Set xmlDoc = New MSXML2.DOMDocument
'
Debug.Print ">>>> GO >>> ", Format(Now, "hh:mm:ss")
myTim = Timer
myRic = "https://mail.google.com/mail/u/0/feed/atom"
Request.Open "GET", myRic
Request.send
'
Do Until Request.readyState = 4
    If Timer > (myTim + 60) Or Timer < myTim Then Exit Do
    Debug.Print "Do loop: ", myTim, Format(Timer - myTim, "0.00"), Request.readyState
    DoEvents
    myWait (0.2)
Loop
Debug.Print "End Do: ", myTim, Format(Timer - myTim, "0.00"), Request.readyState

'xmlDoc.LoadXML Request.responseText
Debug.Print ">>>ResponseText..." & Left(Request.responseText, 500) & "...<<<"
Dim Cioppa As String, lrPos As Long, eTagPos As Long

'Operazioni di pulizia del file xml:
Cioppa = Request.responseXML.XML
Cioppa = Replace(Cioppa, "<entry>", Chr(10) & "<entry>", , , vbTextCompare)
'Cioppa = Replace(Cioppa, " version=""0.3"" xmlns=""http://purl.org/atom/ns#""", "", , , vbTextCompare)  'inutile
Debug.Print "Cleaning >>>..."
Do
'elimina "<link "
    lrPos = InStr(1, Cioppa, "<link ", vbTextCompare)
    If lrPos = 0 Then Exit Do
    eTagPos = InStr(lrPos, Cioppa, "/>", vbTextCompare)
    If eTagPos > lrPos Then
    Debug.Print Mid(Cioppa, lrPos, eTagPos - lrPos + 2)
        Cioppa = Replace(Cioppa, Mid(Cioppa, lrPos, eTagPos - lrPos + 2), "", , , vbTextCompare)
    End If
DoEvents
Loop
Debug.Print "...<<< Cleaned"
Debug.Print ">>>CioppaCleaned.." & Left(Cioppa, 500) & "...<<<"

'
'prima posizione libera nel foglio:
On Error Resume Next
myNext = 0
myNext = Range("A1:AZ10000").Find(What:="*", After:=Range("A1"), _
              SearchOrder:=xlByRows, _
              SearchDirection:=xlPrevious).Row
On Error GoTo 0
myNext = myNext + 1
'
xmlDoc.LoadXML (Cioppa)                                        'Carica xmlDoc
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column               'per ogni intestazione colonna
    Debug.Print ">Importing nodes: " & Cells(1, I).Value
    For cNCnt = 0 To 1000
        If InStr(1, Cells(1, I).Value, "#", vbTextCompare) <> 0 Then        'Verifica se "attributo"
            mySplit = Split("/" & Cells(1, I).Value, "#", , vbTextCompare)  'Gestion Attributo
            If UBound(mySplit) > 0 Then
                If Len(mySplit(0)) < 3 Then mySplit(0) = ""
                Set CipCiop = Nothing
                On Error Resume Next
                    Set CipCiop = xmlDoc.SelectNodes(MasterN & mySplit(0))(cNCnt).Attributes.getNamedItem(mySplit(1))
                On Error GoTo 0
                If Not CipCiop Is Nothing Then
                    Cells(myNext + cNCnt, I) = xmlDoc.SelectNodes(MasterN & mySplit(0))(cNCnt).Attributes.getNamedItem(mySplit(1)).Text
                End If
                Debug.Print MasterN & mySplit(0) & "#" & mySplit(1), cNCnt, Cells(myNext + cNCnt, I)
            End If
        Else                                                                'Gestion ItemText
            Set CipCiop = Nothing
            On Error Resume Next
                Set CipCiop = xmlDoc.SelectNodes(MasterN & "/" & Cells(1, I).Value)(cNCnt)
            On Error GoTo 0
            If Not CipCiop Is Nothing Then
                Cells(myNext + cNCnt, I) = xmlDoc.SelectNodes(MasterN & "/" & Cells(1, I).Value)(cNCnt).Text
            End If
            Debug.Print MasterN & "/" & Cells(1, I).Value, cNCnt, Left(Cells(myNext + cNCnt, I), 80)
        End If
    If CipCiop Is Nothing Then Exit For
    Next cNCnt
DoEvents
Next I
'Fine:
Debug.Print Format(Timer - myTim, "0.00"), "<<<< END"
Set xmlDoc = Nothing
MsgBox ("Completata importazione")
End Sub

Vedi se per caso il risultato della Debug.Print ">>>ResponseText..." & Left(Request.responseText, 500) & "...<<<" iniziale ti da' qualche spunto...

Se mi si accendesse qualche lucina non manchero' di scrivere, ma mi mancano proprio gli appigli.

Ciao

PS: hai un MP non ancora letto?
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi patel » 15/09/19 13:09

Potrebbe dipendere dal fatto che sullo stesso pc ho 4 account Gmail (tutta la famiglia) ? ho notato che cambiando browser a parità di numero (0,1,2,3) ottengo un utente diverso
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi Anthony47 » 16/09/19 00:36

Potrebbe dipendere dal fatto che sullo stesso pc ho 4 account Gmail?
Bingo!
Ho sempre provato col mio account principale; ma provando (dopo pc reboot) con altri account (ne ho altri due) la risposta alla Request e' questo codice html:
Codice: Seleziona tutto
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

Ma mi rifiuta proprio l'autenticazione....
L'unico account con cui lavora e' il mio principale... e non ho idea di quale sia la spiegazione.

Cercando in giro si torna all'affermazione che il feed atom " is only available for Gmail accounts on G Suite domains" (che io non credo di avere!) e che l'autenticazione puo' essere fatta usando OAuth2

Lavorando col browser, usando https://mail.google.com/mail/u/0/feed/atom oppure https://mail.google.com/mail/u/1/feed/atom ottengo (come hai sperimentato anche tu) i risultati di utenti diversi. Ma se l'utente non e' gia' loggato su quel browser allora il tentativo di autenticazione tramite NomeUtente e Password richiesto dal server al momento in cui confermo l'url del feed fallisce, anzi riesce solo per il mio account principale...

Lavorando con la macro, anche qui l'unica autenticazione che riesce e' quella del mio account principale (tramite NomeUtente e Password richiesto dal server al momento della Request)

Insomma qualche progresso l'ho fatto anche io ma nella direzione sbagliata :-? :-?

Buona serata (anzi buona notte), per ora.
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: leggere gmail inbox senza Outlook

Postdi klingklang » 17/09/19 09:21

Ciao a tutti. Ho provato ad accedere al link tramite Power Query, e Google mi ha bloccato l'accesso mandandomi una mail di avviso poiché "qualcuno" ha tentato di accedere con le mie credenziali da un'applicazione non di Google. Non so se questo possa aiutarvi a dipanare la matassa
Enrico
Windows 7 + Office 2016 64bit / Windows 10 + Office 365 32/64bit
Avatar utente
klingklang
Utente Junior
 
Post: 97
Iscritto il: 23/11/18 15:01
Località: San Giovanni in Persiceto

Re: leggere gmail inbox senza Outlook

Postdi patel » 17/09/19 12:23

Ciao kling, per poter accedere tramite applicazione non di Google occorre apilitare le app meno sicure da https://myaccount.google.com/lesssecure ... ae=2&pli=1
Comunque ho riprovato dall'account principale (zero) e il codice di Anthony funziona anche a me, rimarrebba da capire come fare per gli altri account
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi patel » 17/09/19 13:02

e possibilmente inserire user e passw nel codice
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Re: leggere gmail inbox senza Outlook

Postdi klingklang » 17/09/19 13:24

Ok grazie. Sulla tua domanda: perdonami se sono troppo scontato, ma per gli altri account dovrebbe essere:
https://mail.google.com/mail/u/1/feed/atom
https://mail.google.com/mail/u/2/feed/atom
https://mail.google.com/mail/u/3/feed/atom
...
Enrico
Windows 7 + Office 2016 64bit / Windows 10 + Office 365 32/64bit
Avatar utente
klingklang
Utente Junior
 
Post: 97
Iscritto il: 23/11/18 15:01
Località: San Giovanni in Persiceto

Re: leggere gmail inbox senza Outlook

Postdi patel » 17/09/19 13:29

Da browser occorre cambiare il numero dell'account, da excel sembra ti no, oggi dopo le ultime modifiche di Anthony mi funzionano tutti gli account sempre impostando lo zero nella riga
myRic = "https://mail.google.com/mail/u/0/feed/atom"
patel
Utente Senior
 
Post: 306
Iscritto il: 24/04/12 16:03

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "leggere gmail inbox senza Outlook":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti