2016-04-17 17 views
0

現在、GoogleドライブからGoogleシートファイル(.xlxs)を選択できるアプリを開発中です。私のアプリはそのシートの特定のコンテンツを抽出して処理します。私はAndroidのために作られたGoogleドライブのAPIを使用していると私は、これまでのところAndroidのドライブAPIを使用してGoogleシートコンテンツを読むにはどうすればよいですか?

Google Drive Android Demosから例のクラスを利用

、私は、ユーザーのドライブのファイルが表示されているドライブのファイルピッカーを実装しました。ファイルを選択すると、そのファイルのIDが返されます。


最初の問題は、私はこれだけxlslファイルがpickableているMIMEタイプを設定するように見えることができないということです。 Google検索は

アプリケーション/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

が正しいMIMEタイプであることを教えてください。

は私が

IntentSender intentSender = Drive.DriveApi 
      .newOpenFileActivityBuilder() 
      .setMimeType(new String[]{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}) 
      .build(getGoogleApiClient()); 

私が遭遇していないMIMEタイプの前に、このコンテキストでそれを使用していますが、「text/plainの」ミーム型が動作しているようですが、それらはパントマイムの同じリストに発見されたとして

第2の問題は基本的に私のシートの特定の列と行から文字列を抽出する方法に関係します。

これは、選択したファイルの内容を処理するコードです(もちろん、変更することは可能です)。

protected String doInBackgroundConnected(DriveId... params) { 
     String contents = null; 
     DriveFile file = params[0].asDriveFile(); 
     DriveContentsResult driveContentsResult = 
       file.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null).await(); 
     if (!driveContentsResult.getStatus().isSuccess()) { 
      return null; 
     } 
     DriveContents driveContents = driveContentsResult.getDriveContents(); 
     BufferedReader reader = new BufferedReader(
       new InputStreamReader(driveContents.getInputStream())); 
     StringBuilder builder = new StringBuilder(); 
     String line; 
     try { 
      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 
      contents = builder.toString(); 
     } catch (IOException e) { 
      Log.e(TAG, "IOException while reading from the stream", e); 
     } 

     driveContents.discard(getGoogleApiClient()); 
     return contents; 
    } 

答えて

1

は、だから私はGoogleで検索し、しばらくの間、コミュニティを中心に見て、あなたの問題を解決するためにこれらの提案を持っている:

最初の問題

あなただけのシートを編集することを目指しているので、なぜ代わりにsetSelectionFilterを使用するだけではありませんか?ピッカーに表示されるファイルを指定されたファイルタイプに制限します。

「GoogleスプレッドシートのAPI:私はGoogleのシートで(更新)を遊ぶためには、あなたがこのanswer on a similar postあたりとしてSheets APIを使用する必要があると思う

:第二の問題については

行と列でデータにアクセスするようなのようなスプレッドシートで複雑な操作を行うことができます "

これはあなたが何とかして、どういうわけか、少なくとも次に取り組むべきアイデアを与えてくれることを願っています。がんばろう。 :)

+0

うわー、私はシートApiを見つけられなかったと信じられない!私はxlsxファイルに関連するGoogleのものだけです。ライブラリのようなものは唯一の選択肢でした。 – Mumfi

+0

問題1について。 2つの方法の違いは何ですか?いずれにしても、Filterオブジェクトの仕組みやExcelファイルをフィルタリングするための方法については、あまり見つけられないようです。これについてもっと知っていますか? – Mumfi

+0

私はMimeTypeMap.getSingleton()。getMimeTypeFromExtension( "xlsx")によってMIMEタイプを出力することさえできました。 結果: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"。 これを差し込んでもまだ動作しません。何が一体? – Mumfi

関連する問題