使用 Sheets API v4 (Java) 获取 Google Sheets 最后编辑日期

Get Google Sheets Last Edit date using Sheets API v4 (Java)

我在 Android 中使用 Google Sheets API v4。

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

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

我想做这样的事情:

    Spreadsheet spreadsheet = sheetsService.spreadsheets().get(spreadsheetId).setIncludeGridData(true).execute();
    Date date = spreadsheet.getProperties().getLastEditDate();

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

更好的方法是获取每个单元格的修改日期... 但我会接受整个传播的日期sheet 或 sheet.

这在表格 API 中不可用,但您可以使用云端硬盘 API 的 files.get 方法,其中包括 'modifiedTime'响应。 (请注意,默认情况下它不会包括修改时间,您必须在 'fields' 参数中明确要求它。)

使用 Google 表格 API v4.

似乎无法做到这一点

但是...看起来确实可以使用兼容的 Google 驱动器 API v3.

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

这是我所做的:

将此添加到我的 build.gradle(显示在我的表格 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'
}

我已经在使用 EasyPermissions 方法获取帐户和凭据。 Great example here.

然后...

import com.google.api.services.drive.Drive;

...

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

...异步:

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;
}

工作表 api v3 将于 2020 年 3 月弃用,届时,最好的选择是使用驱动器 API.

https://developers.google.com/drive/api/v3/reference/files/list

你可以通过