我在运行的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
单行的数据结构是这样的。
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要怎么打印输出? 本地环境报错,云端环境用什么方法看?
r350178982:
row_id
感谢指点,可以拿到数据了
link_id = row_data[‘借出的UKEY’][0][‘row_id’]
云端环境在脚本中写一个print之后, 在脚本日志中可以查看脚本运行结果详情, 在详情中打出
1 个赞