Как исправить: linksOutToCells [] не разрешены для операции update_rows () - PullRequest
0 голосов
/ 10 июля 2019

Я использую Smartsheet Python SDK и пытаюсь обновить строки в smartsheet, в которых многие из ячеек, которые должны быть обновлены, имеют существующие ссылки на другие листы. Я хочу обновить значения ячеек данными из pandas df, сохраняя при этом ссылки нетронутыми. Когда я пытаюсь обновить update_rows новыми значениями ячейки (но сохраняя исходный объект links_out_to_cells, присоединенный к исходной ячейке), я получаю сообщение об ошибке API 1032: "The attribute(s) cell.linksOutToCells[] are not allowed for this operation." Кто-нибудь знает хороший обходной путь для этой проблемы?

Вот моя evaluate_row_and_build_updates функция (передача строки smartsheet и строки из pandas df - первое значение в каждой строке smartsheet должно сохраняться при обновлении)

def evaluate_row_and_build_updates(ss_row, df_ro):
    new_row = smartsheet.models.Row()
    new_row.id = ss_row.id
    new_row.cells = ss_row.cells

    empty_cell_lst = list(new_row.cells)[1:]
    for i in range(len(empty_cell_lst)):
        empty_cell_lst[i].value = df_row[1][i]

    return new_row

1 Ответ

0 голосов
/ 10 июля 2019

При отправке запроса на обновление значений ячеек в исходных ячейках для ссылок необязательно включать объект linksOutToCells. Вы можете просто обновить значение ячеек. Ссылка на другой лист останется на месте, а добавленное вами новое значение ячейки будет связано с другими листами. Это может выглядеть так:

# Build new cell value
new_cell = smartsheet.models.Cell()
new_cell.column_id = <COLUMN_ID>
new_cell.value = "testing"

# Build the row to update
new_row = smartsheet.models.Row()
new_row.id = <ROW_ID>
new_row.cells.append(new_cell)

# Update rows
updated_row = smar_client.Sheets.update_rows(
  <SHEET_ID>,
  [new_row])

Выполнение этого кода в ячейке, в которой имеется ссылка, сохранит ссылку на ячейку.

...