在工作流里面运行Python脚本,如何获取当前行信息?

我在运行的Python脚本里面,使用了context.current_row,但好像并未生效,有什么办法可以使云端Python脚本获取到工作流中正在操作的当前行记录信息吗?

附上执行日志报错:
“Traceback (most recent call last):
File “index.py”, line 28, in
get_link_sealbag(table_name)
File “index.py”, line 18, in get_link_sealbag
link_data = base.get_row(‘加密机UKEY资产’, link_id)
File “/usr/local/lib/python3.7/site-packages/seatable_api/main.py”, line 292, in get_row
url = self._row_server_url() + row_id + ‘/’
TypeError: can only concatenate str (not “dict”) to str”

是可以获取context.current_row的, 您这里出错是因为 url 拼接类型报错。 我猜测您是直接把current_row当作 id 使用了。 context.current_row返回的是字典类型, 如果要获取row_id的话, 应该是context.current_row.get(“_id”)。

很高兴见到你的回复。

我把完整的脚本代码贴出来。这个脚本,我在表格中的“按钮”触发,是可以进行单行记录更新显示的,但是在工作流里面被调用就会报上面的错误提示。

def get_link_sealbag(table_name: str):
    # 获取当前行数据
    row_data = context.current_row
    row_id = row_data['_id']

    link_id = row_data['借出的UKEY'][0]
    link_data = base.get_row('加密机UKEY资产', link_id)
    sealbag_num = link_data['密封袋编号']

    data = {'归还密封袋编号': sealbag_num}
    base.update_row(table_name, row_id, data)

if __name__ == '__main__':
    # 获取表格名称
    table_name = context.current_table
    # get_link_sealbag('UKEY借出管理')
    get_link_sealbag(table_name)

能看出是什么问题吗?

link_data 那里错了, get_row的第二个参数是row_id, 不是link_id

单行的数据结构是这样的。
image

link_id = row_data[‘借出的UKEY’][0] 是为了拿到链接其他表格记录的行id

上面显示的错误,就是这里应该是一个字典,你把current_row打印出来看一下是什么? 这个数据结构还有可能是

{
。。。。。
"借出的UKEY": [
{“row_id”: "xxxxx", 'display_value': xxxxxx}
]
}

你使用 row_data[xxxx][0].get(“row_id”)试一下

current_row要怎么打印输出? 本地环境报错,云端环境用什么方法看?

感谢指点,可以拿到数据了
link_id = row_data[‘借出的UKEY’][0][‘row_id’]

云端环境在脚本中写一个print之后, 在脚本日志中可以查看脚本运行结果详情, 在详情中打出

1 个赞