Wpis z mikrobloga

#programowanie #google

Jak pobrać JSON-a z Arkuszy Google?

Tu jest przykład: https://coderwall.com/p/duapqq/use-a-google-spreadsheet-as-your-json-backend
Ale konieczne jest opublikowane arkusza jako strona HTML ("Publish to the web").

A da się jakoś bez włączania tej funkcji? Załóżmy, że mam udostępniony arkusz do odczytu, więc nie mogę tego włączyć, ale dane widzę w arkuszu. Tylko jak teraz pobrać z niego JSON-a?

Wiem, że niby jest API Google Docs, ale nie mogę znaleźć przykładu jak to zrobić.
  • 22
@Arveit: no właśnie widzę, że jest API i można się zalogować po OAuth.

Ale po co mi logowanie, jak arkusz udostępniony publicznie (dla osoby mającej link) i chciałbym tylko pobrać dane? W ten sposób się nie da?
@Arveit: nie chcę włączaj tej opcji:

Plik -> Opublikuj w internecie


Ale chcę udostepnić arkusz:

Udostępnij -> Każda osoba mająca link może wyświetlać
@mk321:

[https://spreadsheets.google.com/feeds/list/__tu_id_arkusza__/od6/public/values?alt=json](https://spreadsheets.google.com/feeds/list/__tu_id_arkusza__/od6/public/values?alt=json)
Walisz w to getem i masz jsona :P nie trzeba publikować w internecie
No to jak masz link, to masz też id, więc powinieneś móc normalnie stuknąć do API, tak, jak w przykładzie.


@fegwegw: gdyby tak się dało, to byłoby idealnie (bo własnie tak bym chciał). Ale właśnie się nie da :(

Jak tak robię, to dostaję komunikat:

Niestety, ten dokument nie został opublikowany.


(mimo że arkusz jest udostępniony; ale nie ma włączonej opcji wyświetlania jako strona)

Dlatego szukam innego sposobu (i wolałbym nie
@Arveit: @fegwegw:

https://spreadsheets.google.com/feeds/list/__tu_id_arkusza__/od6/public/values?alt=json

Walisz w to getem i masz jsona :P nie trzeba publikować w internecie


Własnie mówię, że to nie działa.

Macie udostępniony arkusz:

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

Wchodzicie z przeglądarki i widzicie dane? Tak. No to jest udostępniony.

Teraz chciałbym z tego pobrać JSON-a. W jaki sposób?

@mk321: hmmm, możliwe, że coś się zmieniło, bo jeszcze rok temu dało się normalnie czytać JSON-a normalnie po udostępnieniu pliku tylko do odczytu, bez "publikacji w internecie". Tego JSON-a tylko potem ciężko było parsować, z tego co pamiętam, dlatego znalazłem gspread pod pythona, który umożliwia dostanie się do danych bezpośrednio po adresach komórek, zakresach, ma przeszukiwanie, etc. etc.
@Arveit: to że ciężko parsować to bym się potem martwił. A tak to nie mam możliwości dobrać się do tych danych ;/

No to moim zdaniem nic nie zrobisz.


@fegwegw: jak to nic nie zrobię? ( ͡° ʖ̯ ͡°)
Na razie widzę jedynie takie wyjście, że musiałbym brać przez to ich API i logować się przez OAuth. Ale to nie jest dobre (bo trzeba się bez
@mk321: jak to bez sensu logować? Przecież wtedy nie musisz nawet udostępniać pliku do odczytu = dane są bardziej chronione. Logowanie po OAuth to sto razy lepsze rozwiązanie niż wystawianie swoich danych w świat ( ͡° ͜ʖ ͡°)
@Arveit: ale ja chcę udostępnić dane. Jak są udostępnione i mogę sobie skopiować ręcznie, to chciałbym, żeby można było je też skopiować automatycznie z JSON-a. Logiczne. To takie samo uprawnienie (do odczytu).

A dokładniej, to ktoś udostępnia arkusz z danymi. Ja nie mogę edytować (a więc i użyć opcji "publikuj w internecie"), ale mogę odczytywać ręcznie. A nie mogę odczytywać automatycznie (dlaczego?). Wychodzi, że tylko do automatycznego odczytywania (przez JSON-a) muszę
@mk321: aha, tu tkwi diabeł ( ͡° ͜ʖ ͡°) to nie jest Twój arkusz. No to najprościej chyba jest się skontaktować z właścicielem arkusza niż kombinować i dobierać się do nie swoich danych xD

edit:
serio, raczej sie nie da z tym nic zrobić
@Arveit: LOL, co za różnica czy ktoś pobiera dane ręcznie czy automatycznie? Jak ktoś udostępnił, to znaczy, że chciał udostępnić dane.

Czemu od razu zakładasz złe zamiary? Robię apkę, w której użytkownik będzie podawał link do arkusza. Bez sensu jest, żeby raz udostępniał arkusz a drugi raz włączał jeszcze jakąś opcję ("publikuj w internecie") albo się logował.
Czemu od razu zakładasz złe zamiary?


@mk321: nie zakłądam, masz jakąś paranoję chyba ( ͡º ͜ʖ͡º)
Napisz do gościa czy może to udostępnić w formie JSON-a i tyle. Być może oszczędzisz długich godzin poszukiwania rozwiązania.