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

Posted

技术标签:

【中文标题】使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期【英文标题】:Get Google Sheets Last Edit date using Sheets API v4 (Java) 【发布时间】:2017-09-10 16:33:32 【问题描述】:

我在 android 中使用 Google Sheets API v4。

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

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

我想做这样的事情:

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

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

最好是获取每个单元格的修改日期...但我会选择整个电子表格或工作表的日期。

【问题讨论】:

【参考方案1】:

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

【讨论】:

我想我会为其他人添加我自己的答案(稍后),但我肯定会给你功劳。有时,仅仅知道“你不能!”就很重要。此外,去哪里(Drive API files.get)。非常感谢! 在 Drive API v3 中,执行此操作的代码如下所示:driveService.files().get(documentKey).setFields("modifiedTime").execute()【参考方案2】:

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

但是...看起来确实可以使用兼容的 Google Drive 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;

【讨论】:

【参考方案3】:

Sheets api v3 将于 2020 年 3 月弃用,届时最好使用驱动 API。

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

你可以通过

【讨论】:

以上是关于使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sheets API v4 Java 阅读整个 Google 电子表格

如何使用 Google Sheets API V4 导入 CSV 文件

使用Sheets API v4获取与Google帐户关联的所有电子表格列表

Google Sheets API v4 - 如何获得最后一行的价值?

Google Sheets API v4 接收公共供稿的 HTTP 401 响应

国际化多语言方案i18n / class google sheets v4 api 在线文档同步json