2016-07-26 76 views
1

每当我检索一个SmartSheet行并循环其中的单元格时,无论该工作表上的复选框状态如何,所有类型为CHECKBOX的单元总是具有displayValue或Null值。有没有其他人经历过这个? (我正在使用他们的python sdk)Smartsheet CHECKBOX单元始终返回为空

回答

2

我相信你已经发现了一个Python SDK的bug。

Kevin的答案正确地描述了API本身的行为,正如我通过以下请求/响应验证的(使用Postman)。

获取行 - 请求:

GET https://api.smartsheet.com/2.0/sheets/7359436428732292/rows/863888846677892 

获取行 - 响应:

{ 
    "id": 863888846677892, 
    "sheetId": 7359436428732292, 
    "rowNumber": 1, 
    "version": 88, 
    "expanded": true, 
    "accessLevel": "OWNER", 
    "createdAt": "2016-07-06T22:21:58Z", 
    "modifiedAt": "2016-07-27T01:50:46Z", 
    "cells": [ 
    { 
     "columnId": 4509804229093252, 
     "value": true 
    }, 
    ... 
    ] 
} 

在上面的实例响应中,所述细胞包含被选择的复选框( = TRUE)。所以API本身的行为是正确的。

然而,如果我使用Smartsheet Python SDK检查完全相同的单元中,属性被错误地设置为

Python代码:

import os 
import smartsheet 

os.environ['SMARTSHEET_ACCESS_TOKEN'] = 'MY_TOKEN_VALUE' 
smartsheet = smartsheet.Smartsheet() 

# get sheet 
sheet = smartsheet.Sheets.get_sheet(7359436428732292) 

print('SheetId:\n' + str(sheet.id) + '\n') 
print('RowId:\n' + str(sheet.rows[0].id) + '\n') 
print('ColumnId (for the checkbox column):\n' + str(sheet.columns[0].id) + '\n') 
print('Column object (for the checkbox column):\n' + str(sheet.columns[0]) + '\n') 
print('Cell that contains a selected Checkbox:\n' + str(sheet.rows[0].cells[0])) 

这代码会生成以下输出:

SheetId:

7359436428732292 

RowId的:

863888846677892 

ColumnID的(对于复选框列):

4509804229093252 

Column对象(用于复选框列):

{"index": 0, "locked": null, "systemColumnType": null, "autoNumberFormat": null, "symbol": null, "format": null, "primary": null, "options": [], "filter": null, "width": 75, "lockedForUser": null, "title": "CBcol", "hidden": null, "type": "CHECKBOX", "id": 4509804229093252, "tags": []} 

包含选择的单元格ED复选框:

{"format": null, "displayValue": null, "linksOutToCells": null, "columnType": null, "columnId": 4509804229093252, "hyperlink": null, "value": null, "conditionalFormat": null, "strict": true, "formula": null, "linkInFromCell": null} 

所以,不幸的是,它似乎是Python的SDK没有正确设置的复选框列(或符号列,如“星”行为类似复选框列)。我建议你记录这个问题here,以便Smartsheet知道并且可以解决它。如果您能够在本地修复问题(即通过修改您的本地副本包,则还可以提交pull request

0

如果单元格从未有过任何值设置,那么任何单元格的值都可能为null(例如,如果您将值添加到新行中的单元格中,则所有其他单元格单元格将为空)。我猜这就是你所看到的。

如果您选中其中一个复选框单元格,请保存,然后取消选中它,您应该在API中看到它的值为false

出于您的程序逻辑的目的,您可以将任何空复选框单元视为未选中。

0
在smartsheet库的cell.py文件

,取代旧:

@value.setter 
def value(self, value): 
    if isinstance(value, six.string_types): 
     self._value = value 

有:

@value.setter 
def value(self, value): 
    if isinstance(value, six.string_types) or value is True: 
     self._value = value