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.

Другие вопросы по тегам