Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Smartsheet复选框单元格始终返回为空_Python_Smartsheet Api - Fatal编程技术网

Python Smartsheet复选框单元格始终返回为空

Python Smartsheet复选框单元格始终返回为空,python,smartsheet-api,Python,Smartsheet Api,每当我检索SmartSheet行并在其中的单元格中循环时,CHECKBOX类型的所有单元格始终具有displayValue或Null值,而不管该复选框在工作表上的状态如何。还有其他人经历过吗?(我正在使用他们的python sdk)如果单元格从未设置过任何值,则任何单元格的值都可能为null(例如,如果向新行中的单元格添加值,则所有其他单元格都将为null)。我猜这就是你看到的 如果选中其中一个复选框单元格save,然后取消选中它,那么在API中应该会看到它的值为false 出于程序逻辑的目的,

每当我检索SmartSheet行并在其中的单元格中循环时,CHECKBOX类型的所有单元格始终具有displayValue或Null值,而不管该复选框在工作表上的状态如何。还有其他人经历过吗?(我正在使用他们的python sdk)

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

如果选中其中一个复选框单元格save,然后取消选中它,那么在API中应该会看到它的值为
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
与: