如何自动更新 Smartsheet 列中的下拉内容(值)(使用下拉属性设置)。我希望根据单独的智能表(源智能表)上输入的值更新目标智能表中的下拉内容。
使用 smartsheet-python-sdk,我尝试实现以下代码,但目标表中的下拉列表没有明显更新...
import smartsheet
# Initialize client
access_token = 'XXXXXXXXXX'
smartsheet_client = smartsheet.Smartsheet(access_token)
# IDs of the source and target sheets
source_sheet_id = 'XXXXXXXXXX'
target_sheet_id = 'XXXXXXXXXX'
source_column_id = 'XXXXXXXXXX'
dropdown_column_id = 'XXXXXXXXXX'
# Defining this function to get unique values from the source sheet column
def get_unique_values(sheet_id, column_id):
sheet = smartsheet_client.Sheets.get_sheet(sheet_id)
values = set()
for row in sheet.rows:
for cell in row.cells:
if cell.column_id == column_id and cell.value:
values.add(cell.value)
return list(values)
# Getting unique values from the source sheet
dropdown_values = get_unique_values(source_sheet_id, source_column_id)
# Updating the dropdown column in the target sheet
column = smartsheet_client.Sheets.get_column(target_sheet_id, dropdown_column_id)
column.options = dropdown_values
updated_column = smartsheet_client.Sheets.update_column(target_sheet_id, dropdown_column_id, column)
# Visualizing the updates
print(f"Updated dropdown values: {updated_column.options}")
如果没有错误消息,我并不肯定,但我猜测问题是您在 update_column() 方法中使用列对象作为参数。当我尝试这样做时出现的错误是:
..."errorCode": 1032, "message": "The attribute(s) column.id are not allowed for this operation."...
从字典中删除“id”键值对后,我刚刚使用目标列对象中的字典创建了一个新的列对象。这是我要更新的代码块:
# Updating the dropdown column in the target sheet
column = smartsheet_client.Sheets.get_column(target_sheet_id, dropdown_column_id)
column.options = dropdown_values
col_dict = column.to_dict()
col_dict.__delitem__('id')
new_column = smartsheet.models.Column(col_dict)
updated_column = smartsheet_client.Sheets.update_column(target_sheet_id, dropdown_column_id, new_column)