如何使用 smartsheet-python-sdk 自动填充 Smartsheet 中的下拉内容

问题描述 投票:0回答:1

如何自动更新 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}")
smartsheet-api
1个回答
0
投票

如果没有错误消息,我并不肯定,但我猜测问题是您在 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)

© www.soinside.com 2019 - 2024. All rights reserved.