如何通过工作表API v4

时间:2017-01-26 10:32:46

标签: google-sheets google-drive-api spreadsheet google-spreadsheet-api google-sheets-api

我在更新Google网络硬盘上的现有电子表格时遇到了问题,而没有使用批量更新(现在我不确定它是否可行)

我已经有一些带有一些数据的电子表格,然后我通过

从谷歌驱动器中检索文件
  Drive drive = new Drive.Builder(TRANSPORT, JSON_FACTORY, credential)
                .setApplicationName(APPLICATION_NAME)
                .build();
  drive.files().list().execute().getItems()

我可以通过名称轻松匹配我的文件,然后我只想更新已创建文件中的电子表格。

Sheets service = new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, credential)
                        .setApplicationName(APPLICATION_NAME)
                        .build();
Spreadsheet spreadsheet = service.spreadsheets().get(file.getId()).execute().setSheets(new ArrayList<>());

在这里,我从文件中获取与名称匹配的电子表格,然后我只想放置empy表格(例如)。

首先,我不确定如何正确地更新&#34;驱动器上的电子表格,因为我无法使用

service.spreadsheets().create(spreadsheet).execute();

并且我不想使用批量更新,因为我已经通过setSheet()方法设置了电子表格内容。

我认为应该通过以下方式确定:

Permission permission = drive.permissions().get(file.getId(), permissionId).execute().setType("anyone");
drive.permissions().update(
    spreadsheet.getSpreadsheetId(),
    permissionId,
    permission
).execute();

我在这里检查谷歌API: https://developers.google.com/drive/v2/reference/permissions/update 和这里: https://developers.google.com/sheets/api/guides/batchupdate 但他们正在使用批量更新。

我很好奇的是为什么有setSheets()方法,当我已经创建了我的工作表时,它似乎很容易用于更新,但似乎我不能简单地更新现有文件中的电子表格。

有趣的是,每次使用drive.perm.update时,它都会创建一个新文件(包含我想要更新的电子表格),这对我来说实际上并没有多大意义。

那么有没有机会只更新驱动器上的文件并只使用电子表格方法?

1 个答案:

答案 0 :(得分:1)

Jay Lee在此相关SO post中的此声明将提供明确的见解:

  

Google Drive API适用于通用文件/文件夹互动。要直接修改Google电子表格数据,Google Sheets API将是更好的选择。

此外,要更新Google电子表格,您可能需要查看Reading & Writing Cell Values,其中介绍了使用spreadsheets.values集合的基本知识。有人提到,

  

如果您需要更新工作表中的格式或其他属性,则需要使用spreadsheets collection中描述的Updating Spreadsheets

有关详细信息,请参阅Batch update operations,并显示示例here