NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Android - Google drive - čtení a psaní do tabulky (Android studio)

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Vojtěch Bešťák:12.7.2016 9:15

Zdravím, potřebuji vytvořit aplikaci, která by dokázala zapsat a přečíst z tabulky na mém google drive z jakéhokoliv zařízení (tabulka by byla s veřejnou url, takže by do ni mohl zapisovat a číst kdokoliv kdo by ji měl).

Koukal jsem se na nějaké tutoriály na internetu, ale moc jsem tomu nerozuměl.
Neporadil by mi prosím někdo jak na to? :)

 
Odpovědět
12.7.2016 9:15
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:12.7.2016 12:00

Ahoj, co přesně Ti není jasné?
Tady je to pěkně vysvětlené: https://developers.google.com/…tart/android

Read: https://developers.google.com/…ples/reading
Write: https://developers.google.com/…ples/writing

Editováno 12.7.2016 12:01
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
12.7.2016 12:00
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vojtěch Bešťák:12.7.2016 14:09

Nechápu například jak implementovat tento typ kódu do aplikace...

{
  "range": "Sheet1!A1:D5",
  "majorDimension": "ROWS",
  "values": [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "30/20/2016"],
    ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
  ],
}
{
  "spreadsheetId": spreadsheetId,
  "updatedRange": "Sheet1!A1:D5",
  "updatedRows": 5,
  "updatedColumns": 4,
  "updatedCells": 20,
}

(https://developers.google.com/…ples/writing#…)

 
Nahoru Odpovědět
12.7.2016 14:09
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:12.7.2016 14:46

Toto je JSON formát dat, který posíláš. Mimochodem, trošku je v tom zmatek.
Toto posíláš:

{
  "range": "Sheet1!A1:D5",
  "majorDimension": "ROWS",
  "values": [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "30/20/2016"],
    ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
  ],
}

A toto dostaneš jako result:

{
  "spreadsheetId": spreadsheetId,
  "updatedRange": "Sheet1!A1:D5",
  "updatedRows": 5,
  "updatedColumns": 4,
  "updatedCells": 20,
}

Asi bych nejdříve začal s jednoduchým získání dat. To se jednoduše dělá přes GET požadavek. Až ti bude fungovat vytáhnutí dat, tak bych zkoušel nějaký zápis.

Pro vytáhnutí dat zadáš tuto adresu:

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}

kde místo spreadsheetId vložíš ID své tabulky, kterou ideálně nastavíš tak, aby nepotřebovala ničí login.
range je rozsah hodnot ve formátu: [A1:B2]

Nahoru Odpovědět
12.7.2016 14:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:12.7.2016 15:03

Trošku jsem googlil a našel zajímavou věc.

Na této adrese:

https://developers.google.com/apis-explorer/?hl=en_US#p/sheets/v4/

si můžeš vyzkoušet, právě uvedené příkazy v praxi

Dále si musíš v google developer konzoli aktivovat google sheet api aby jsi vůbec mohl přistupovat k těm tabulkám...

Editováno 12.7.2016 15:04
Nahoru Odpovědět
12.7.2016 15:03
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vojtěch Bešťák:13.7.2016 8:56

To čtení jsem vyřešil takovým způsobem, že z google drive se stáhne JSON té tabulky, a potom se v aplikaci json překope do listview s výce kolonkami.

Stále ale nechápu jak použít ve své aplikaci ty příkazy pro to zapsání...(myslel bych si, že to bude něco podobného jak čtení - nejdříve se z textu vytvoří json soubor, a ten se potom updatuje na google drive..)

 
Nahoru Odpovědět
13.7.2016 8:56
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:13.7.2016 11:07

No, stejně, jako se dotazujes na získání dat metodou GET, tak pro vkládání dat se použije metoda POST. Přičemž tam vložíš data v JSON formatu, který je předepsaný na těch stránkách.

Btw. pouzivej tlačítko odpovědět, aby se mi ukázala notifikace a já reagoval dřív...

Nahoru Odpovědět
13.7.2016 11:07
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Vojtěch Bešťák:13.7.2016 14:30

Mám problém spíše v tom, že tomu zas tolik nerozumím... program pro čtení jsem si stáhl zde
http://www.telerik.com/…urce-android (dole na stánce je odkaz na celý kód na githubu)

a nalezl jsem tuto část kódu:

private String downloadUrl(String urlString) throws IOException {
        InputStream is = null;

        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000 /* milliseconds */);
            conn.setConnectTimeout(15000 /* milliseconds */);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            // Starts the query
            conn.connect();
            int responseCode = conn.getResponseCode();
            is = conn.getInputStream();

            String contentAsString = convertStreamToString(is);
            return contentAsString;
        } finally {
            if (is != null) {
                is.close();
            }
        }
    }

ale už nevím, jak to překopat na to, aby to odesílalo... jediné co tak...

conn.setRequestMethod("POST");
 
Nahoru Odpovědět
13.7.2016 14:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.