【问题标题】:SmartSheet API python extended objectSmartSheet API python 扩展对象
【发布时间】:2018-09-02 03:25:06
【问题描述】:

SmartSheet SDK API 中有几个对象是对象的扩展。例如,CellLink 和 ObjectValue 是 Cell 对象的扩展。我已经阅读并了解这些是父/子类并且涉及继承。但是,这个概念仍然让我无法理解,我无法弄清楚创建 CellLink 对象的语法。

new_cell = ss.models.Cell()
linked_cell = ss.models.Cell()
linked_cell.column_id = int(columnid)
linked_cell.sheet_id = int(sheetid)
linked_cell.row_id = int(rowid)
new_cell.link_in_from_cell = linked_cell

上面的例子给了我最丰富的错误信息,因此我认为它最接近我尝试过的所有变体的正确语法。对此示例以及可能的基本概念的任何帮助将不胜感激。

raise ValueError("`{0}` invalid type for {1} value".format(value, 
self.object_type))
ValueError: `{"columnId": 2068210422966148}` invalid type for <class 
'smartsheet.models.cell_link.CellLink'> value

我相信我已经找到了这个问题的答案。似乎您只需要创建一个属性字典,例如:

ex_dict = {sheet_id: 0974792938, column_id: 07263839242, row_id: 
2632938474839}

new_cell.link_in_from_cell = ex_dict

诀窍在代码后面。而不是像这样创建一个新行:

row = ss.models.Row()

您需要更新现有行,例如:

row = ss.Sheets.get_row(sheet_id, row_id)

但是,我仍然有一个奇怪的错误: 字段“createdAt”属于意外类型。

【问题讨论】:

    标签: python smartsheet-api


    【解决方案1】:

    您应该发送仅包含您希望更改的属性的 Row 和 Cell 对象。您确实想尝试修改现有的 Row 对象(例如,使用 createdAt 属性,而是分配一个具有适当行 ID 和单元格的新对象以进行更新。

    有关创建单元格链接的完整示例,请参阅https://github.com/smartsheet-samples/python-snippets/blob/04951c2ca8ae1a97386bdd3fa6e010f2845e1421/samples.py#L45

    【讨论】:

    • 您分享的建议和链接将为我节省大量时间。谢谢史蒂夫
    • 嗨,史蒂夫,我已经按照您在脚本中创建单元链接对象的示例进行了操作,您在上面链接到了该对象,但它对我不起作用。我只是在您的示例代码中替换了源和目标 ID(行、列和工作表),但我仍然遇到同样的错误。 “您的请求中缺少必需的对象属性:cell.value。”此外,当我尝试打印 cell_link.status 时,我得到一个 None 值。这个脚本有没有可能是为以前版本的 API 编写的?目前,我正在运行版本 1.3.3。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多