如何通过Android的Drive API阅读Google Sheet内容?

时间:2016-04-17 12:18:48

标签: java android google-drive-api

我目前正在开发一款应用,用户可以从其Google云端硬盘中选择Google表格文件(.xlxs)。然后,我的应用程序将提取并使用该工作表的某些内容。

我正在使用针对Android制作的Google云端硬盘API,并使用Google Drive Android Demos中的示例类

到目前为止,我已经实现了一个Drive文件选择器,其中显示了用户的Drive文件。选择文件将返回该文件的ID。

第一个问题是我似乎无法设置mime类型,因此只有xlsl文件可以选择。谷歌搜索告诉我

  

应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

是正确的mime类型。

我在此上下文中使用它

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

之前我没有遇到过mime类型,但是作为meme类型的“text / plain”似乎有效,并且它们可以在相同的mime类型列表中找到..

第二个问题主要涉及如何从我的工作表中的某些列和行中提取字符串。

这是处理所选文件内容的代码(当然可能会被修改,只是不知道如何)。

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 个答案:

答案 0 :(得分:1)

所以我用谷歌搜索并浏览了社区一段时间并提出了解决问题的建议:

第一个问题

由于您的目标只是编辑表单,为什么不使用setSelectionFilter呢?它将选取器上显示的文件限制为指定的文件类型。

对于第二个问题:

我认为为了使用Google表格进行游戏(更新),您需要按照Sheets API使用answer on a similar post

" Google电子表格Api允许在电子表格中执行复杂操作,可以按行和列访问数据。"

希望这能以某种方式帮助你,至少让你知道接下来要解决的问题。祝好运。 :)