Програмиране за Android с Google Таблици

Добро утро Stackoverflow общност,

Работя върху приложение за Android и в момента се сблъсквам с куп проблеми.

Сценарий: Трябва да изпращам и изтеглям данни към Google Spreadsheet, но тук е проблемът, това приложение ще бъде разгърнато само на около 10-15 10-инчови таблета. Сега приложението е приложение за оценка за техници, но когато техниците са на терен, те няма да имат връзка за данни, защото таблетите са само WiFi. Единственият път, когато приложението ще може да се свърже, е когато се срещнат сутрин в офиса и синхронизират приложението, за да се гарантира, че данните могат да се синхронизират с Google Sheets чрез Google Drive и Android.

Така че това, което мислех да направя, е да взема първоначалната електронна таблица, да я конвертирам в sqlite db и да накарам приложението да попълни полетата с данни локално от устройството, след което, когато оценката е завършена, по някакъв начин да превърне тези данни, извлечени в приложението, обратно в Google Spreadsheet и запазени на устройството. (Възможно ли е това и ако да, къде мога да намеря информация за конвертиране на данни от sqlite db в Google Spreadsheet).

След това, когато техникът се върне в офиса, където има връзка за данни, синхронизирайте новосъздадения лист с Google устройство, така че администраторът да може да управлява това, което трябва да управлява.

Търсих и търсих, но не мога да обхвана това, така че всяка помощ би била от полза.

Друг проблем е, че тъй като няма връзка за данни към устройството, когато те извършват оценката, влизането в Google Plus, което внедрихме, няма да работи, когато съм на полето, така че ще трябва да направя процедура за локално влизане, която sqlite db може да се справи?

Благодаря предварително.

Ще


person Psy Chotic    schedule 02.04.2015    source източник


Отговори (2)


Можете ли да инсталирате приложението Google Таблици на устройството? Ако е така, може да не се налага да усложнявате нещата толкова много. Тук можете да видите, че Google Таблици са налични и офлайн, ако имате инсталираното приложение. Така че всичко, което трябва да направят, е да работят върху електронната таблица, когато са на терена, да се върнат в офиса и да я синхронизират на следващата сутрин. Това не би ли решило всичките ви проблеми? Моля, уведомете ме, ако съм пропуснал нещо, но от това, което разбрах, това трябва да е достатъчно.

person pointNclick    schedule 02.04.2015
comment
Хей, благодаря, pointNClick, да, реалистично това ще реши всички проблеми и дори се сетих за това, но клиентът ни кара да направим приложение за Android, което попълва и записва данните от електронната таблица с база данни между тях (Sqlite). Мениджърът не иска неговите техници да прецакват електронната таблица и предпочита приложението да попълни необходимите полета за изчисления. Знам, че това е досадно, защото трябва да изтегля електронната таблица, да конвертирам в sqlite db, да запазя данните, след което да опитам да генерирам повторно електронната таблица на Google от запазените полета с данни и да синхронизирам, когато съм в област с данни. - person Psy Chotic; 02.04.2015
comment
Доколкото ми е известно, няма нищо, което да направи всичко това за вас. Така че ще трябва да измислите свое собствено решение. Можете да използвате API на таблици, за да получите всички тези данни за вас, но ходенето напред и назад със sqlite ще бъде объркано, според мен. Какво ще кажете обаче за синхронизирането на електронната таблица с главен лист, където техниците могат да качват само новите данни, а не да се забъркват със старите (главни)? Някакви мисли за това? - person pointNclick; 02.04.2015
comment
По никакъв начин не предполагам, че това не е изпълнимо, просто това е нещо, което ще изисква да напишете основната част от това изпълнение на прехвърляне на данни напред и назад. Използването на главния и подчинения лист ще изисква само да напишете скрипт, който прави всичко това, без собствени сървърни реализации за обработка на данните, влизане и т.н. и данни, актуализирани сигурно с видимост на живо. По този начин, дори и да им дадете живи устройства, това няма да има значение. Въпреки че разбирам, че може да имате притеснения, които не можете да споделите, но се опитвам да разбера дали това е възможност за разглеждане? - person pointNclick; 02.04.2015
comment
Може лесно да се направи с помощта на Google Apps Script, както е споменато тук. - person pointNclick; 02.04.2015
comment
Мисля, че отхапахме повече, отколкото можем да дъвчем, опитвайки различни подходи - person Psy Chotic; 03.04.2015

Честно казано, не мога да ви кажа как да качите директно промените в този файл, но мога да ви кажа как да изтеглите съдържанието като csv с помощта на API на Google Drive за Android, което според мен можете след това да редактирате както желаете (или конвертирайте това в SQL таблица).

Забележка: Ако вашият файл не е файл на Google Spreadsheets, това е много по-лесно. Демонстрациите от връзката на Google Github по-долу могат да се използват по начина, по който са, за да изпълните задачата си. Ако искате да използвате файлове с електронни таблици на Google, тогава моят (ужасен) процес може да ви е полезен.

ПРЕДУПРЕЖДЕНИЕ: ТОВА Е НАИСТИНА ГЛУП НАЧИН ДА НАПРАВИТЕ ТОВА, НО ЕДИНСТВЕНИЯТ НАЧИН, КОЕТО ЗНАМ ДА НАПРАВЯ ТОВА, С ИЗПОЛЗВАНЕТО НА API НА GOOGLE DRIVE.

Предполагам, че сте видели нещата на https://github.com/googledrive/android-demos/tree/master/src/com/google/android/gms/drive/sample/demo, примери за API на Google Drive от Google. Ще предположа също, че сте разбрали как да намерите файла, който търсите, но не можете да получите достъп до съдържанието на файла.

След като успеете да намерите DriveFile, трябва да получите метаданните на този файл. Получаването на метаданните ни позволява да получим алтернативната връзка за този файл. Алтернативната връзка изглежда така: https://docs.google.com/spreadsheets/d/[unique_file_id]/edit?usp=drivesdk

Можем да редактираме малко низ и да премахнем всичко след последната наклонена черта и след това да добавим export?format=csv.

Вашата връзка сега изглежда така: https://docs.google.com/spreadsheets/d/[unique_file_id]/export?format=csv

Можете да извикате AsyncTask, за да изтеглите този URL адрес и да получите InputStream, който съдържа съдържанието на файла.

Ако не е нужно да се притеснявате, че всички ще качват в един и същи файл (което би имало смисъл, тъй като има възможност за припокриване на данни), тогава вашият втори проблем става много по-лесен. Просто погледнете този файл, за да видите пример как да създадете файл в основната папка: https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/CreateFileActivity.java

person avbor    schedule 02.06.2015