SmartSheet-API: 更改读写发布URL

SmartSheet-API: change the readwrite publish URL

我正在尝试使用以下代码更改 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。我需要能够改变这个。

我不确定您是要发布 sheet 并获取 URL 还是更改 URL 以获得已发布的 sheet。我将涵盖这两个主题。

发布类型

首先您需要决定您想要发布的类型。以下是每种发布类型的简短描述。有关发布的更多信息,请参见 here

setReadOnlyLiteEnabled: Lightweight version of the sheet without row attachments or discussions.
setReadOnlyFullEnabled: Rich version of the sheet with the ability to download row attachments and discussions.

setReadWriteEnabled: Rich version of sheet with the ability to edit cells and manage row attachments and discussions.

setIcalEnabled: Add key dates from this sheet to your non-Smartsheet calendar

使用 Java SDK

发布 sheet

根据您的示例代码,您似乎在尝试发布具有 setReadWriteEnabled 类型的 sheet。因此,这是一个完成该操作并打印出 sheet 发布位置的 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());

更改已发布 Sheet URL

目前没有生成新 URL 的选项。

如果您必须在特定 URL 移除对已发布 sheet 的访问权限,则可以通过将适当的类型设置为 false(例如 setReadWriteEnabled(false))来关闭发布设置.

smartsheet API(Java SDK 使用)记录了我们在 this location 发布 sheet 时可以设置的内容。

将 sheet 复制到新的 sheet,然后发布新的 sheet 是另一种选择。这会给你一个新的发布 URL 因为这是一个新的 sheet。这可以通过如下代码完成

// 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());