Smartsheet API изменить? Ошибка неверного запроса, связанная с типом формата индекса
У меня есть часть программного обеспечения, которая использует Smartsheet API (в частности, Python SDK). Недавно я понял, что подключение программного обеспечения Smartsheet было нарушено с середины января, и, насколько я могу судить, это связано с изменениями на стороне Smartsheet. Я даже откатился на версию, которая, как я знаю, работала ранее (версия, полученная из справки в этом посте).
Вот код, который я использую для доступа к листу:
#Now query the smartsheet server
try:
# Load entire sheet
sheet = ss.Sheets.get_sheet(sheet_id, include=['format'],
page_size=500)
logging.info("Loaded "+str(len(sheet.rows))+
" rows from sheet: "+sheet.name)
column_map = {}
# Build column map for later reference-translates
# column names to column id
for column in sheet.columns:
column_map[column.title] = column.id
# Helper function to find cell in a row i a smartsheet object
def get_cell_by_column_name(row, column_ame):
column_id = column_map[column_ame]
return row.get_column(column_id)
# Find first row that hasn't already been written to
newrowindex = [row.row_number
for row in sheet.rows
if get_cell_by_column_name(row,
'Column4').display_value != None][-1]
# Build the row to update
newRow = ss.models.Row()
newRow.id = sheet.rows[newrowindex].id
for col in sheet.columns:
newCell = ss.models.Cell()
newCell.column_id = col.id
newCell.value = df[sheet.rows[2].get_column(
col.id).display_value
].loc[1]
oldformat = sheet.rows[newrowindex].get_column(
col.id).format
if oldformat == None:
oldformat = ',,,,,,,,,,,,,,,'
newformat = oldformat.split(',')[:-3]
newformat = "".join([ii+',' for ii in
newformat])[:-1]
newformat = (newformat + df_fmts[
sheet.rows[2].get_column(
col.id).display_value
].loc[1])
newCell._format = newformat
newRow.cells.append(newCell)
newRow.cells[0].value = sheet.rows[newrowindex].cells[0].value
newRow.cells[2].value = fieldinputs.projectid
result = ss.Sheets.update_rows(sheet_id,[newRow])
smshtexportButton.button_type = "success"
smshtexportButton.label = "Sucessfully Published!"
Вот итоговый журнал ошибок:
Request: {
command: GET https://api.smartsheet.com/2.0/sheets/7120922902587268?
include=format&pageSize=500&page=1
}
2018-02-16 09:53:00,378 Loaded 205 rows from sheet: Bulk Update
2018-02-16 09:53:01,126 Request: {
command: PUT https://api.smartsheet.com/2.0/sheets/7120922902587268/rows
}
2018-02-16 09:53:01,134 Response: {
status: 400 Bad Request
content: {
{
"detail": {
"index": 0,
"rowId": 6710889537660804
},
"errorCode": 1008,
"message": "Unable to parse request. The following error occurred: Index
value '11' is invalid for format type DECIMAL_COUNT",
"refId": "1upixmmo45bp3"
}
}
Последнее успешное обновление программного обеспечения, внесенное в лист "Массовое обновление", было 16.01.18 в 15:37 по тихоокеанскому времени. Я изначально подозревал, что я внес изменения в df
а также df_fmts
кадры в приведенном выше коде, но после возврата к той же версии кода, которая использовалась 1/16, я все равно получаю ошибку Bad Request.
Любая помощь будет принята с благодарностью.
1 ответ
В приложении Smartsheet самое большее, что вы можете установить десятичных разрядов, - это 5. Все, что больше этого, вернет ошибку, которую вы видите. В соответствии с ошибкой вы устанавливаете десятичные разряды равными 11, что не поддерживается. Я предлагаю взглянуть на ваш код, который устанавливает формат и как он становится равным 11. Затем убедитесь, что десятичное число никогда не превышает 5.