多维表查找引用字段id替换成对应文本
评论
收藏

多维表查找引用字段id替换成对应文本

经验分享
图图
2026-01-12 09:27·浏览量:272
图图
发布于 2026-01-12 09:26更新于 2026-01-12 09:27272浏览

一、问题背景描述

用户通过指令获取飞书多维表中“查找引用”字段的文本时,如果被引用的字段是“单选”类型,接口返回的只有选项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_dict

3.列出记录列出需要获取“查找引用”字段的文本,使用字典替换

# 使用提醒:
# 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

配置流程:



三、结果展示



收藏
全部评论1
最新
发布评论
评论