1

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

4

1 回答 1

0

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

发布类型

首先,您需要确定您想要发布的类型。以下是每种发布类型的简短说明。可以在此处找到有关发布的更多信息。

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

更改已发布的工作表 URL

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

setReadWriteEnabled(false)如果您必须删除对特定 URL 上已发布工作表的访问权限,则可以通过将相应类型设置为 false(例如)来关闭发布设置。

smartsheet API(Java SDK 使用)记录了我们在此位置发布工作表时可以设置的内容。

将工作表复制到新工作表然后发布新工作表是另一种选择。这将为您提供一个新的发布 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());
于 2015-08-07T04:57:03.200 回答