使用Sheets API v4(Java)获取Google表格上次编辑日期

Lim*_*awk 8 google-api google-sheets google-drive-android-api google-sheets-api

我在Android中使用Google表格API v4.

https://developers.google.com/sheets/api/quickstart/android

我需要知道最后一次修改工作表的时间(包括用户); 我需要这个人:

在此输入图像描述

我想做这样的事情:

    Spreadsheet spreadsheet = sheetsService.spreadsheets().get(spreadsheetId).setIncludeGridData(true).execute();
    Date date = spreadsheet.getProperties().getLastEditDate();
Run Code Online (Sandbox Code Playgroud)

但是,当然,不getLastEditDate()存在这样的属性方法.是否有参数或其他API方法来调用以获取此数据?

更好的方法是获取每个单元格的修改日期......但我会考虑整个电子表格或表格的日期.

Sam*_*lin 7

这在Sheets API中不可用,但您可以使用Drive API的files.get方法,该方法在响应中包含'modifiedTime'.(请注意,默认情况下它不包括修改时间,您必须在'fields'参数中明确要求它.)

  • 我想我会为其他人添加我自己的答案(稍后),但我当然会把功劳归给你。有时,知道“你不能!”就很重要。另外,去哪里(Drive API files.get)。非常感谢! (2认同)

Lim*_*awk 6

使用 Sheets API v4 似乎无法做到这一点。

但是……看起来确实可以使用兼容的 Google Drive API v3 来完成。

注意:这个解决方案最好的部分是我可以对两个 API 使用相同的身份验证和凭据收集方法。例如,一旦我有了获取凭证的代码,我就可以交替和连续地将它用于两个 API。

这是我所做的:

将此添加到我的build.gradle(显示在我的 Sheets API 声明下方)

compile('com.google.apis:google-api-services-sheets:v4-rev468-1.22.0') {
    exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-drive:v3-rev69-1.22.0') {
    exclude group: 'org.apache.httpcomponents'
}
Run Code Online (Sandbox Code Playgroud)

我已经在使用EasyPermissions获取帐户和凭据的方法。很好的例子在这里。

然后...

import com.google.api.services.drive.Drive;
Run Code Online (Sandbox Code Playgroud)

...

protected Drive driveService = new Drive.Builder(transport, jsonFactory, credential)
            .setApplicationName("My Application Name")
            .build();
Run Code Online (Sandbox Code Playgroud)

...异步:

private DateTime getSheetInformation() throws IOException {

    String spreadsheetId = settings.getSpreadsheetId();
    Drive.Files.Get fileRequest = driveService.files().get(spreadsheetId).setFields("id, modifiedTime");
    File file = fileRequest.execute();
    if (file != null) {
        return file.getModifiedTime();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)