2012-05-24 3 views
16

Ho un foglio di lavoro Google che non è stato reso pubblico, ma è disponibile solo per chiunque disponga del link di accesso. Sebbene io possa accedere ai dati in formato CSV dal mio browser anche quando non sono collegato al mio account Google (cioè, è consentito l'accesso anonimo), non c'è modo che io possa scaricare i dati dalla riga di comando usando wget, per instante . Ho trovato diverse pagine web con alcune istruzioni per creare l'URL di download, ma finora non ho avuto successo. C'è un modo semplice e diretto per farlo o dovrò utilizzare alcune librerie di dati di Google per accedere a tali dati?Scarica foglio di lavoro Google non pubblicato come CSV

risposta

0

ora posso rispondere alle domande, in modo Lascio rispose per bene (incollare dal mio commento precedente).

Il mio problema era che non stavo conservando il cookie correttamente. A quel tempo, stavo usando un programma Python per provare a scaricare questo.Questo risolto il problema che riportava:

# Cookie management 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar())) 
csv_data = csv.reader(opener.open(url)) 
22

Forse non sto capendo correttamente cosa stai cercando di fare, ma ho trovato una soluzione in this article che funziona bene per me.

Nell'articolo, l'autore crea un link di download per il foglio di calcolo come file XLS (usando "& output = xls”), ma ho provato "& output = csv" e scaricato correttamente un file CSV corretto.

Ecco il link per il download al mio "download prova foglio di calcolo", costruito solo il modo in cui l'autore dell'articolo ha suggerito, ma con "csv" sostituiti per "xls":

https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv

il link è anonimo (vale a dire, "Chiunque abbia il link può visualizzare"), e L'ho scaricato senza accedere al mio account Google. Devo ammettere che non ho usato wget per farlo (ho appena usato un browser - non ho installato wget), ma non riesco a pensare a un motivo che wget non avrebbe funzionato altrettanto bene.

In realtà, ho appena preso una copia di wget e l'ho provato, e scarica il file in modo corretto anche:

% wget --no-check-certificate --output-document=test.csv 'https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv' 

< bla bla bla, reams of output from wget > 

% cat test.csv 
Foo,Bar,Baz 
1,2,3 
4,5,6 

Così ci ya go ...


AGGIORNAMENTO per il 2018

Come commentato da @AndyMortimer, il nuovo URL di download è
  https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GID>&format=csv
dove <KEY> e <GID> possono essere ottenute da URL tua di navigazione,
  https://docs.google.com/spreadsheets/d/<KEY>/edit#gid=<GID>

PS: fogli di calcolo possono avere più cartelle di lavoro, GID è l'ID cartella di lavoro desiderato. Il foglio di lavoro con un solo foglio di lavoro ha in genere il numero gid=0, ma se ne aggiungi più, questi avranno numeri casuali (il numero GID viene visualizzato anche cambiando l'ordine di tabulazione).

Quindi, utilizzando wget e lo stesso foglio di calcolo,

wget --no-check-certificate -O test.csv \ 
    'https://docs.google.com/spreadsheets/d/0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc/export?gid=0&format=csv' 
+0

Solo per curiosità ho provato a andare a prendere il file con wget utilizzando sia "& output = xls" e "& output = txt", ed entrambe le prove hanno funzionato correttamente. (Il formato "txt" fa sì che il foglio di calcolo sia scaricato come un file delimitato da tabulazioni, cosa che non avrei saputo se non avessi iniziato a scherzare con questo, quindi grazie! Ho imparato un paio di cose nuove in questo processo.) – Hephaestus

+0

Alla fine, per nessun motivo non ho ancora capito, non ero in grado di scaricare il file. Potrei parlare con il proprietario per renderlo pubblico, quindi è stata la fine del problema per me. Grazie comunque per le tue risposte. –

+0

Certo, nessun problema. Non ho avuto alcuna esperienza con ciò quando ho trovato la tua domanda - stavo cercando di capire come fare qualcosa di simile in quel momento. Quindi è stato un buon esercizio per me capire come farlo, e gran parte delle mie ragioni per rispondere era documentare ciò che avevo scoperto. Bene, sei riuscito a trovare una soluzione alternativa così efficace. :-) – Hephaestus

13

Sono in grado di ottenere un URL -abile wget da URL del foglio di calcolo pubblici che assomigliano a questo:

https://docs.google.com/spreadsheets/d/LONG_ID_STRING/edit?usp=sharing 

cambiando loro di simile a questa:

https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv 

modo che il mio comando wget sarà simile:

$ wget "https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv" 

Assicurati di condividere il foglio di calcolo prima con il pulsante blu "Condividi" in alto a destra, quindi "Ottieni link condivisibile".

+0

per cambiare il nome del file con wget: wget -O FILE URL – schurpf

+1

Voglio aggiungere che il secondo LONG_ID_STRING non sembra avere importanza. Il seguente URL funziona correttamente: 'https: //docs.google.com/spreadsheets/d/LONG_ID_STRING/export? Format = csv' –

+0

Questa soluzione ha funzionato per me. @ArjunGuha è corretto. I secondi 'LONG_ID_STRING' non sono necessari. –

-1

imbattuto in questo problema e ha cercato un paio di delle soluzioni. Nessuno funzionava perfettamente, quindi ho scritto questo ricciolo che sembra fare il lavoro. Hai bisogno di condividere il foglio di calcolo di Google con chiunque abbia il link per farlo funzionare

curl -o /path/to/file/you/want/csv/to/go.csv 'https://docs.google.com/spreadsheet/ccc?key=[the-id-of-your-spreadsheet]&output=csv' -L

il -L è il trucco qui ha google spesso muove il csv intorno ma vi invierà un link di reindirizzamento. -L indica a curl di seguire i reindirizzamenti finché non si posiziona sul file.

potete trovare il id del foglio di calcolo aprendolo in Google Drive e guardando l'url

https://docs.google.com/spreadsheets/d/[idwillbehere]/edit#gid=0

+0

Si prega di mostrare come mappare '_BIG_BASE64_' e' _ID_' da 'https: // docs.google.com/spreadsheets/d/_BIG_BASE64_/edit # gid = _ID_' al proprio' arricciamento '. Non ci sono 'ccc' e no' key 'arg a fogli di calcolo (plurale). –