我正在尝试遍历整个工作区并在树视图中列出每个元素,但是当我尝试在找到的文件夹中抓取工作表时,Folder类中的getSheets()方法始终返回null。我做错了吗?
TreeItem<String> workspace = new TreeItem<>("Earls Workspace", workspaceIcon);
workspace.setExpanded(true);
try {
Workspace earlsWorkspace = SmartsheetConnector.getInstance().getSmartsheet().workspaces().getWorkspace(*****);
List<Sheet> sheets = earlsWorkspace.getSheets();
List<Folder> folders = earlsWorkspace.getFolders();
for (Folder folder : folders) {
TreeItem<String> item = new TreeItem<>(folder.getName(), new ImageView(folderIcon));
System.out.println("Folder: " + folder.getName());
List<Sheet> folderSheets = folder.getSheets(); <- problem is here
System.out.println(folderSheets.toArray());
for (Sheet sheet : folderSheets) {
TreeItem<String> subItem = new TreeItem<>(sheet.getName(), new ImageView(sheetIcon));
item.getChildren().add(subItem);
}
workspace.getChildren().add(item);
}
for (Sheet sheet : sheets) {
TreeItem<String> item = new TreeItem<>(sheet.getName(), new ImageView(sheetIcon));
workspace.getChildren().add(item);
}
sheetExplorer.setRoot(workspace);
} catch (SmartsheetException ex) {
ex.printStackTrace();
}
我故意阻止了工作区ID。
答案 0 :(得分:1)
由于Java SDK模仿Smartsheet API,因此ID函数的GET工作区仅返回高级文件夹信息,并且不包括文件夹中的工作表,这就是它返回null的原因。有两种方法可以解决您的问题:
从工作区获取文件夹列表后,您可以按ID功能调用GET文件夹,这将返回文件夹中的工作表列表。
Workspace earlsWorkspace = SmartsheetConnector.getInstance().getSmartsheet().workspaces().getWorkspace(*****);
List<Folder> folders = earlsWorkspace.getFolders();
for (Folder folder : folders) {
List<Sheet> folderSheets = SmartsheetConnector.getInstance().getSmartsheet().folders().getFolder(folder.getId()).getSheets();
for (Sheet sheet : folderSheets) {
System.out.println(sheet.getName());
}
}
调用getHome()
函数。这将返回所有Home对象的嵌套列表,包括工作表,工作空间和文件夹,以及可选的报表和/或模板,具体取决于您传入的EnumSet。您必须浏览工作区列表并找到您的工作区列表从那里,您可以遍历文件夹,并致电folder.getSheets()
以获取文件夹中的工作表列表。
Home home = SmartsheetConnector.getInstance().getSmartsheet().home().getHome(EnumSet.of(ObjectInclusion.TEMPLATES);
在SDK的下一个版本中,将有一个选项来指定是否要加载所有内容,包括工作区内的嵌套文件夹和嵌套工作表,这样您就可以轻松调用folder.getSheets()
,就像你在做的那样,拿回一张床单。