Python Smartsheet复选框单元格始终返回为空
每当我检索SmartSheet行并在其中的单元格中循环时,CHECKBOX类型的所有单元格始终具有displayValue或Null值,而不管该复选框在工作表上的状态如何。还有其他人经历过吗?(我正在使用他们的python sdk)如果单元格从未设置过任何值,则任何单元格的值都可能为null(例如,如果向新行中的单元格添加值,则所有其他单元格都将为null)。我猜这就是你看到的 如果选中其中一个复选框单元格save,然后取消选中它,那么在API中应该会看到它的值为Python Smartsheet复选框单元格始终返回为空,python,smartsheet-api,Python,Smartsheet Api,每当我检索SmartSheet行并在其中的单元格中循环时,CHECKBOX类型的所有单元格始终具有displayValue或Null值,而不管该复选框在工作表上的状态如何。还有其他人经历过吗?(我正在使用他们的python sdk)如果单元格从未设置过任何值,则任何单元格的值都可能为null(例如,如果向新行中的单元格添加值,则所有其他单元格都将为null)。我猜这就是你看到的 如果选中其中一个复选框单元格save,然后取消选中它,那么在API中应该会看到它的值为false 出于程序逻辑的目的,
false
出于程序逻辑的目的,您可以将任何空复选框单元格视为未选中。我相信您已经在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
},
...
]
}
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]))
获取行-响应:
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
},
...
]
}
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]))
在上面的示例响应中,单元格包含一个选中的复选框(值=true)。因此,API本身运行正常
但是,如果我使用检查完全相同的单元格,则值属性被错误地设置为null:
Python代码:
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
},
...
]
}
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]))
此代码生成以下输出:
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
},
...
]
}
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]))
单张:
7359436428732292
罗维德:
863888846677892
ColumnId(用于复选框列):
列对象(对于复选框列):
包含选定复选框的单元格:
{"format": null, "displayValue": null, "linksOutToCells": null, "columnType": null, "columnId": 4509804229093252, "hyperlink": null, "value": null, "conditionalFormat": null, "strict": true, "formula": null, "linkInFromCell": null}
因此,不幸的是,Python SDK似乎没有为复选框列(或行为类似于复选框列的“星”等符号列)正确设置值。我建议您记录此问题,以便Smartsheet了解并解决此问题。如果您能够在本地解决此问题(即,通过修改smartsheet python sdk包的本地副本),那么您也可以在smartsheet库的cell.py文件中提交一个。,替换旧的:
@value.setter
def value(self, value):
if isinstance(value, six.string_types):
self._value = value
与: