用户通过指令获取飞书多维表中“查找引用”字段的文本时,如果被引用的字段是“单选”类型,接口返回的只有选项ID,而非直观的选项文本。现有方案需要手动维护一个ID与文本的映射字典,但在选项频繁增减或变更时,手动更新字典不仅繁琐,且容易出错,维护成本较高。
1.在被引用的表中新增一个字段为查找引用,引用本表的单选字段。

2.列出记录列出被引用表的单选和查找引用字段,然后调用代码生成映射字典
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def main(列出记录, 查找引用字段名, 单选字段名):
if not isinstance(列出记录, list):
raise ValueError("输入必须是一个列表")
if not isinstance(查找引用字段名, str) or not isinstance(单选字段名, str):
raise ValueError("字段名称必须是字符串类型")
result_dict = {}
for item in 列出记录:
if not isinstance(item, dict):
raise ValueError("列表中的每个元素必须是字典")
if 'fields' not in item:
raise ValueError("字典中必须包含 'fields' 字段")
fields = item['fields']
if 查找引用字段名 not in fields or 单选字段名 not in fields:
raise ValueError(f"fields中必须包含 '{查找引用字段名}' 和 '{单选字段名}' 字段")
key_data = fields[查找引用字段名]
value_data = fields[单选字段名]
if not isinstance(key_data, list) or len(key_data) == 0:
raise ValueError(f"'{查找引用字段名}' 字段必须是非空列表")
# 使用键名字段的第一个值作为键名,键值字段的值作为键值
key = key_data[0]
value = value_data
result_dict[key] = value
return result_dict3.列出记录列出需要获取“查找引用”字段的文本,使用字典替换
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def main(列出记录, 映射字典):
if not isinstance(列出记录, list):
raise ValueError("第一个参数必须是列表")
if not isinstance(映射字典, dict):
raise ValueError("第二个参数必须是字典")
def _process_dict(item_dict):
if 'fields' not in item_dict:
return item_dict
processed_dict = item_dict.copy()
processed_fields = {}
for key, value in item_dict['fields'].items():
if isinstance(value, list) and len(value) == 1 and isinstance(value[0], str):
# 如果值是包含单个字符串的列表,进行替换
lookup_key = value[0]
if lookup_key in 映射字典:
processed_fields[key] = 映射字典[lookup_key]
else:
processed_fields[key] = value # 如果映射字典中没有对应的键,保持原值
else:
processed_fields[key] = value # 不符合条件的值保持不变
processed_dict['fields'] = processed_fields
return processed_dict
result = []
for item in 列出记录:
if not isinstance(item, dict):
raise ValueError("字典列表中的每个元素都必须是字典")
result.append(_process_dict(item))
return result


