Google Sheets API:设置权限

4

在我的Java应用程序中,我按照以下方式创建新的Google表格:

    Sheets service = new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, credential)
            .setApplicationName(APPLICATION_NAME)
            .build();

    SpreadsheetProperties properties = new SpreadsheetProperties();
    properties.setTitle("Title");

    Spreadsheet export = new Spreadsheet();
    export.setProperties(properties);

    Spreadsheet response = service.spreadsheets().create(export).execute();

这个方法可行,我可以从响应中获取表格ID。现在我想知道:

  1. 由于我使用的是服务帐户,我看不到将创建电子表格的用户。
  2. 我想将权限设置为“任何拥有链接的人”,但似乎没有此选项。
1个回答

2
由于我正在使用服务帐户,因此我看不到谁将创建电子表格的用户。
您可以使用“用户”作为类型,例如:
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
        .setServiceAccountId(confBean.getServiceAccountId()).setServiceAccountScopes("https://spreadsheets.google.com/feeds")
        .setServiceAccountPrivateKeyFromP12File(new File("path to the P12File"))
        .setServiceAccountUser("user@domain.com")
        .build();

这段文字的意思是:实际上,这取决于您的最终目标。以下是可能的类型和值用户 - 电子邮件地址 - 用户的电子邮件地址。例如:joe@thecompany.com - 电子邮件地址 - Google小组的电子邮件地址。例如:admins@thecompany.com domain- - Google Apps域的域名。例如:thecompany.com anyone - N/A 任何人 - 权限不需要电子邮件地址或域字段。
查看此SO线程以获取其他信息。
我想将权限设置为“拥有链接的任何人”,但似乎没有这样的选项。
使用作为用户类型的“任何人”(如上所述)。然后使用“读者”作为角色。
private Permission insertPermission(Drive service, String fileId) throws Exception{
   Permission newPermission = new Permission();
   newPermission.setType("anyone");
   newPermission.setRole("reader");
   newPermission.setValue("");
   newPermission.setWithLink(true);
   return service.permissions().insert(fileId, newPermission).execute();
}

请查看这个有帮助的SO线程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接