SmartSheet-API:更改readwrite发布URL

时间:2015-08-06 15:15:57

标签: java smartsheet-api smartsheet-java-sdk-v1

我正在尝试使用以下代码更改任何出版物的智能表编辑的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。我需要能够改变它。

1 个答案:

答案 0 :(得分:0)

我不确定您是否尝试发布工作表并获取URL或更改已发布工作表的URL。我将介绍这两个主题。

发布类型

首先,您需要确定要执行的发布类型。以下是每种发布类型的简短描述。有关发布的更多信息,请访问here

  

setReadOnlyLiteEnabled :没有行附件或讨论的工作表的轻量级版本。
   setReadOnlyFullEnabled :表单的丰富版本,可以下载行附件和讨论。

     

setReadWriteEnabled :丰富的工作表版本,可以编辑单元格并管理行附件和讨论。

     

setIcalEnabled :将此工作表中的关键日期添加到非Smartsheet日历中

使用Java SDK

发布工作表

使用您的示例代码,您似乎尝试使用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());