Avatar
Vojtěch Bešťák:

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. července 9:15
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:

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. července 12:01
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 12. července 12:00
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vojtěch Bešťák:

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. července 14:09
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:

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. července 14:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:

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. července 15:04
Nahoru Odpovědět 12. července 15:03
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vojtěch Bešťák:

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. července 8:56
Avatar
Odpovídá na Vojtěch Bešťák
Petr Štechmüller:

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. července 11:07
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Vojtěch Bešťák:

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. července 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.