【问题标题】:Get Google Sheets Last Edit date using Sheets API v4 (Java)使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期
【发布时间】: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 方法来获取此数据?

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

【问题讨论】:

    标签: google-sheets google-api google-drive-android-api google-sheets-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

      你可以通过

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多