У меня есть приложение для Android, которое позволяет пользователям экспортировать CSV-файл на Google Диск, чтобы они могли его редактировать, а затем повторно импортировать файл в Android.Загрузка CSV-файла в виде Листа Google с помощью Android SDK
Это использовалось для работы с старыми документами Google Docs. Я обновил этот старый API до ранней версии Google Диска в прошлом году и смог заставить его работать достаточно хорошо. Теперь, когда я обновился до последней версии, эта функция моего приложения эффективно нарушена. Я думаю, что это комбинация разрешений SDK и выключение Google Таблиц с Google Диска.
Что происходит, я загрузить файл с мета данных:
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle(fileName)
.setMimeType("text/csv")
.setStarred(true)
.build();
Загруженный файл, то есть синий значок Google Docs. Когда пользователь получает доступ к Google Диску для его редактирования, он может только «просматривать» документ. Пока они просматривают его, они могут «открыть» документ с помощью Google Таблиц, который затем создает новый документ (этот новый документ имеет значок «Зеленые Google Таблицы»), и поскольку в SDK Google есть эта новая «функция» (цитата из: https://developers.google.com/drive/android/queries):
Примечание: API Android Drive работает только с областью https://www.googleapis.com/auth/drive.file. Это означает, что только файлы, которые пользователь открыл или создал с вашим приложением, могут быть , соответствующие запросу.
Новый файл не может быть просмотрен моим, поэтому изменения пользователя не могут быть восстановлены.
Есть ли способ загрузить его непосредственно в виде файла Google Таблиц? Или, может быть, еще одно решение, которое я пропустил полностью?
редактирует
Вот пример того, как я отправляю мой код с помощью Google Drive SDK:
В конструкторе моего AsyncTask Я создаю Google клиент:
mGoogleApiClient = new GoogleApiClient.Builder(activity)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
Тогда в методе doInBackground я делаю что-то вроде этого:
DriveApi.DriveContentsResult cResult = Drive.DriveApi.newDriveContents(mGoogleApiClient).await();
OutputStream os = cResult.getDriveContents().getOutputStream();
InputStream is = new FileInputStream(f);
//write the input stream to the output stream
....
DriveFileResult exportResult = Drive.DriveApi.getRootFolder(mGoogleApiClient)
.createFile(mGoogleApiClient, changeSet, cResult.getDriveContents())
.await();
Это довольно просто (как только вы понять это) там просто не кажется, чтобы быть подальше, чтобы сообщить SDK, что я хочу этот документ, чтобы быть «Google Sheet» вместо «Google Doc»
Благодаря!
-Aaron
Мое дело в том, что import = false (что является значением по умолчанию). Установить import = true – pinoyyid
Используется ли это с помощью веб-api для Google Drive? Я не вижу нигде в Android SDK (developers.google.com/drive/android), который позволяет вам установить свойство с именем import. Я обновил вопрос, чтобы включить код в Android SDK. – Aaron
Как упоминает @Rivero ниже, для этого вам нужно использовать параметр convert, который в настоящее время не поддерживается в API Android. Не могли бы вы подать запрос функции на трекер проблемы API, в котором излагаются ваши варианты использования? https://code.google.com/a/google.com/p/apps-api-issues/ Тем временем я предлагаю продолжать использовать клиент Java API. – Daniel