java - SmartSheet-API:更改读写发布 URL

标签 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。我需要能够改变这一点。

最佳答案

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

发布类型

首先,您需要决定要进行哪种类型的发布。以下是每种发布类型的简短描述。有关发布的更多信息可以找到 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 发布工作表

通过您的示例代码,您似乎正在尝试发布具有 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 的选项。

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

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

关于java - SmartSheet-API:更改读写发布 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31859562/

相关文章:

java - 直接子数组复制到二维数组和在java中使用for循环之间有功能区别吗

c# - 创建 excel 表和输入 SQL 一起运行时不起作用?

python - 在mac上安装smartsheet-python-sdk时出错

python - 使用 Python API 在 Smartsheet 中复制工作表

java - 如何使用 smartsheet api 移动工作表

Java List 的引用传递问题

java - Hamcrest 测试奇怪的时移失败

java - 在另一个类中访问一个类的变量

smartsheet-api - Smartsheet - 使用 API 将工作表下载为 Excel 文件