1

我正在尝试使用 python 从现有工作表中的列中删除公式。

我尝试使用列对象(column.formula = None)将我的公式设置为无

它不起作用,我的列对象保持不变。有人有意见可以解决这个问题吗?谢谢 !

4

1 回答 1

0

这让我有点想通,但似乎我找到了解决方案。事实证明,这是一个两步过程:

  1. 更新column对象以删除公式(通过设置column.formula为空字符串)。

  2. 对于工作表中的每一行,更新该列中的单元格以删除公式(设置为cell.value空字符串和)。cell.formulaNone

完成第 1 步将从column对象中删除公式 - 但每行中的单元格仍将包含公式。这就是需要第 2 步的原因——第 2 步将从每行的单个单元格中删除公式。

这是 Python 中的一些示例代码,可以完成我所描述的操作。(请务必更新id值以对应您的工作表。)

第 1 步:从列中删除公式

column_spec = smartsheet.models.Column({
    'formula': ''
})

# Update column
sheetId = 3932034054809476
columnId = 4793116511233924
result = smartsheet_client.Sheets.update_column(sheetId, columnId, column_spec)

第 2 步:从每行的该单元格中删除公式

注意:此示例代码仅更新一个特定行 - 在您的情况下,您需要更新工作表中的每一行。只需为工作表中的每一行构建一个行对象(如下所示),然后调用smartsheet_client.Sheets.update_rows一次,传入您构建的与工作表中所有行相对应的行对象数组。通过这种方式,您只需调用 API 一次,这是最有效的处理方式。

# Build new cell value
new_cell = smartsheet.models.Cell()
new_cell.column_id = 4793116511233924
new_cell.value = ''
new_cell.formula = None

# Build the row to update
row_to_update = smartsheet.models.Row()
row_to_update.id = 5225480965908356
row_to_update.cells.append(new_cell)

# Update row
sheetId = 3932034054809476
result = smartsheet_client.Sheets.update_rows(sheetId, [row_to_update])
于 2022-03-04T14:47:28.333 回答