Программирование Android с помощью Google Sheets

Доброе утро, сообщество Stackoverflow,

Я работаю над приложением для Android и в настоящее время сталкиваюсь с кучей проблем.

Сценарий: мне нужно передавать и извлекать данные в электронную таблицу Google, но проблема в том, что это приложение будет развернуто только на 10–15 10-дюймовых планшетах. Теперь приложение представляет собой оценочное приложение для технических специалистов, однако, когда технические специалисты находятся в полевых условиях, у них не будет подключения для передачи данных, поскольку планшеты поддерживают только Wi-Fi. Единственный раз, когда приложение сможет подключиться, — это когда они встречаются утром в офисе и синхронизируют приложение, чтобы гарантировать синхронизацию данных с Google Sheets через Google Drive и Android.

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

Затем, когда технический специалист вернется в офис, где есть подключение для передачи данных, синхронизируйте вновь созданный лист с диском Google, чтобы администратор мог управлять тем, что ему нужно.

Я искал и искал, но не могу понять это, поэтому любая помощь будет полезной.

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

Заранее спасибо.

Буду


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


Ответы (2)


Можете ли вы установить приложение Google Sheets на устройство? Если это так, возможно, вам не придется делать все так сложно. Здесь вы можете увидеть, что 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, как уже упоминалось здесь. - person pointNclick; 02.04.2015
comment
Я думаю, что мы откусили больше, чем можем прожевать, пробуя разные подходы. - person Psy Chotic; 03.04.2015

Честно говоря, я не могу сказать вам, как напрямую загружать изменения в этот файл, но я могу рассказать вам, как загрузить содержимое в виде CSV-файла с помощью API Google Диска для Android, который, я думаю, вы затем можете редактировать по своему усмотрению (или преобразовать это в таблицу SQL).

Примечание. Если ваш файл не является файлом электронных таблиц Google, это намного проще. Демонстрации из приведенной ниже ссылки Github от Google можно использовать так, как они предназначены для выполнения вашей задачи. Если вы хотите использовать файлы электронных таблиц Google, то мой (ужасный) процесс может вам пригодиться.

ВНИМАНИЕ: ЭТО ДЕЙСТВИТЕЛЬНО ГЛУПЫЙ СПОСОБ СДЕЛАТЬ ЭТО, НО Я ЗНАЮ ЕДИНСТВЕННЫЙ СПОСОБ СДЕЛАТЬ ЭТО С ИСПОЛЬЗОВАНИЕМ GOOGLE DRIVE API.

Я предполагаю, что вы видели материал на https://github.com/googledrive/android-demos/tree/master/src/com/google/android/gms/drive/sample/demo , примеры API Диска Google из 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