我正在尝试使用以下代码更改任何出版物的智能表编辑的URL
Sheet sheet = null;
try {
sheet = smartsheet.sheets().getSheet(sheetId, null);
} catch (SmartsheetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
SheetPublish publish = new SheetPublish.PublishStatusBuilder().setReadOnlyFullEnabled(false).
setReadOnlyLiteEnabled(false).setIcalEnabled(false).setReadWriteEnabled(true).build();
publish.setReadWriteUrl(URL);
smartsheet.sheets().updatePublishStatus(sheet.getId(), publish);
} catch (SmartsheetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我运行它时,我得到一个InvalidRequestException。我需要能够改变它。
答案 0 :(得分:0)
我不确定您是否尝试发布工作表并获取URL或更改已发布工作表的URL。我将介绍这两个主题。
首先,您需要确定要执行的发布类型。以下是每种发布类型的简短描述。有关发布的更多信息,请访问here。
setReadOnlyLiteEnabled :没有行附件或讨论的工作表的轻量级版本。
setReadOnlyFullEnabled :表单的丰富版本,可以下载行附件和讨论。setReadWriteEnabled :丰富的工作表版本,可以编辑单元格并管理行附件和讨论。
setIcalEnabled :将此工作表中的关键日期添加到非Smartsheet日历中
使用您的示例代码,您似乎尝试使用setReadWriteEnabled类型发布工作表。所以这里有一个例子来完成它并打印出工作表发布的URL。
SheetPublish sheetPublish = new SheetPublish.PublishStatusBuilder().setIcalEnabled(false).setReadOnlyFullEnabled(false).
setReadOnlyLiteEnabled(false).setReadWriteEnabled(true).build();
SheetPublish sheetPublishResult = smartsheet.sheets().updatePublishStatus(7298027523204996L, sheetPublish);
System.out.println(sheetPublishResult.getReadWriteUrl());
目前无法生成新网址。
如果您必须删除对特定网址上已发布工作表的访问权限,则可以通过将相应类型设置为false来关闭发布设置(例如setReadWriteEnabled(false)
)。
智能表API(Java SDK使用)记录了我们在this location发布工作表时可以设置的内容。
将工作表复制到新工作表然后发布新工作表是另一种选择。这将为您提供新的发布URL,因为这是一个新工作表。这可以通过以下代码完成:
// Setup a sheet to copy
Sheet sheet = new Sheet();
sheet.setFromId(7298027523204996L);
// Copy the sheet
Sheet newSheet = smartsheet.sheets().createSheetFromExisting(sheet, EnumSet.allOf(ObjectInclusion.class));
// Setup what we will publish
SheetPublish sheetPublish = new SheetPublish.PublishStatusBuilder().setIcalEnabled(false).setReadOnlyFullEnabled(false).
setReadOnlyLiteEnabled(false).setReadWriteEnabled(true).build();
// publish the new sheet
SheetPublish sheetPublishResult = smartsheet.sheets().updatePublishStatus(newSheet.getId(), sheetPublish);
System.out.println(sheetPublishResult.getReadWriteUrl());