Skip to content

自动化插件介绍

自动化插件是多维表格自动化能力的扩展,开发者能够凭借插件机制和 API,打造出适用于不同场景的自动化插件,满足各类用户的多样化需求。而用户在安装这些插件后,可以在自动化流程中轻松实现自定义指令。

接下来我们用“发送WPS协作消息”插件来举例,详细介绍开发流程

发送给个人

发送给群组

开发流程介绍

交付产物

最终交付产物为zip包,包括以下三个部分:

  1. template.json // 页面配置文件

  2. index.js // 执行脚本文件

  3. meta.json // 插件描述文件

template.json (模板配置文件)

通过template.json可以生成参数配置界面,在自动化插件运行时,将这些参数传入到执行引擎中,实现最终效果

发送WPS协作消息配置介绍

json
{
    "id": 1,
    "type": 1,
    "name": "发送WPS协作消息",
    "desc": "向指定用户/群组发送消息",
    "config": {},
    "params": []
}
名称类型是否必填备注
idnumberY默认为1
typenumberY默认为1
namestringY在自动化流程中显示的指令名字
descstringY在自动化流程中显示的指令描述
configobjectY默认{}
paramsobject[]Y用户填写的参数集合,最终会传入到执行脚本文件

params

数组格式,里面每个配置项对应一个控件,发送WPS协作消息根据配置项的不同,输入项范围在6 ~ 9个:

  1. 发送给

  2. 接收人 / 群组

  3. 提醒群内成员

  4. 成员名单

  5. 消息卡片标题

  6. 消息内容

  7. 消息内容显示来源信息

  8. 选择消息卡片类型按钮

  9. 消息卡片按钮配置(跳转链接 / 交互按钮)

发送给

json
{
    "name": "receiver_type",
    "ui": {
        "type": 2,
        "config": {
            "label": "发送给",
            "placeholder": "",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "dynamic": false,
                "select_var": false,
                "show_on_mounted": true,
                "opt_list": [
                    {
                        "label": "个人",
                        "value": "person"
                    },
                    {
                        "label": "群组",
                        "value": "group"
                    }
                ]
            }
        }
    },
    "val": {
        "default": "person",
        "default_type": "string",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": []
    },
    "plugins": [],
    "linkage": {
        "component_show_correlation_config": [
            {
                "name": "person_id_list",
                "patterns": ["person"]
            },
            {
                "name": "group_id_list",
                "patterns": ["group"]
            },
            {
                "name": "at_type",
                "patterns": ["group"]
            }
        ]
    }
}
接收人

json
{
    "name": "person_id_list",
    "ui": {
        "type": 48,
        "config": {
            "label": "接收人",
            "placeholder": "请选择成员",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "system_list": [
                    {
                        "label": "触发人",
                        "value": "var_trigger_user",
                        "type": "trigger_user",
                        "originalInfo": {
                            "type": "Contact"
                        }
                    }
                ]
            }
        }
    },
    "val": {
        "default": {
            "__exp_kind__": "flat_array",
            "__exp_value__": []
        },
        "default_type": "string_array",
        "default_kind": "insert_values",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "dataframe"
            },
            {
                "value": "datetime"
            },
            {
                "value": "db_record"
            }
        ]
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "default_kind": "variable",
                "component_type": "cascader",
                "allow_types": [
                    {
                        "value": "dataframe"
                    },
                    {
                        "value": "datetime"
                    },
                    {
                        "value": "db_record"
                    }
                ],
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\",\"format\":\"plain\"}"
                }
            }
        }
    ],
    "linkage": {}
}
群组

json
{
    "name": "group_id_list",
    "ui": {
        "type": 31,
        "config": {
            "label": "群组",
            "placeholder": "至少选择一个群组",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            }
        },
        "option": {}
    },
    "val": {
        "default": [],
        "default_type": "string_array",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "group_array"
            }
        ]
    },
    "plugins": [],
    "linkage": {}
}
提醒群内成员

json
{
    "name": "at_type",
    "ui": {
        "type": 2,
        "config": {
            "label": "提醒群内成员",
            "placeholder": "",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "dynamic": false,
                "select_var": false,
                "show_on_mounted": true,
                "opt_list": [
                    {
                        "label": "不提醒",
                        "value": "at_none"
                    },
                    {
                        "label": "提醒所有人",
                        "value": "at_all"
                    },
                    {
                        "label": "提醒指定人",
                        "value": "at_person"
                    }
                ]
            }
        }
    },
    "val": {
        "default": "at_none",
        "default_type": "string",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": []
    },
    "plugins": [],
    "linkage": {
        "component_show_correlation_config": [
            {
                "name": "at_person_list",
                "patterns": ["at_person"]
            }
        ]
    }
}
成员名单

json
{
    "name": "at_person_list",
    "ui": {
        "type": 45,
        "config": {
            "label": "成员名单",
            "placeholder": "请选择成员",
            "rule": {
                "required": false,
                "err_msg": ""
            },
            "option": {
                "dynamic": true,
                "select_var": false,
                "opt_list": [],
                "pull_rule": {
                    "params": [
                        {
                            "key": "woa_group_id_list",
                            "source": "params",
                            "value": "group_id_list"
                        },
                        {
                            "key": "file_id",
                            "source": "global",
                            "value": "file_id"
                        }
                    ],
                    "action": 17
                }
            }
        }
    },
    "val": {
        "default": {
            "__exp_kind__": "flat_array",
            "__exp_value__": []
        },
        "default_type": "string_array",
        "default_kind": "insert_values",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "dataframe"
            },
            {
                "value": "datetime"
            },
            {
                "value": "db_record"
            }
        ]
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "default_kind": "variable",
                "component_type": "cascader",
                "allow_types": [
                    {
                        "value": "dataframe"
                    },
                    {
                        "value": "datetime"
                    },
                    {
                        "value": "db_record"
                    }
                ],
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\",\"format\":\"plain\"}"
                }
            }
        }
    ],
    "linkage": {}
}
消息卡片标题

json
{
    "name": "message_title",
    "ui": {
        "type": 1,
        "config": {
            "label": "消息卡片标题",
            "placeholder": "",
            "component_properties": {
                "hiddenHoverTip": true,
                "canUseLookUp": true,
                "canUseFormula": true
            },
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "system_list": [
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    },
                    {
                        "label": "触发人",
                        "value": "var_trigger_user",
                        "type": "trigger_user"
                    },
                    {
                        "label": "修改的工作表",
                        "value": "var_sheet_name",
                        "type": "modify_sheet_name"
                    }
                ]
            }
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "template_string",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "et_file"
            },
            {
                "value": "et_sheet"
            },
            {
                "value": "dataframe"
            },
            {
                "value": "db_record"
            },
            {
                "value": "json_object"
            },
            {
                "value": "datetime"
            }
        ]
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "default_kind": "variable",
                "component_type": "cascader",
                "allow_types": [
                    {
                        "value": "et_file"
                    },
                    {
                        "value": "et_sheet"
                    },
                    {
                        "value": "dataframe"
                    },
                    {
                        "value": "db_record"
                    },
                    {
                        "value": "json_object"
                    },
                    {
                        "value": "datetime"
                    }
                ],
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\",\"format\":\"plain\"}",
                    "extra_config": {
                        "db_fields_variable_filters": {
                            "excludes_types": ["Attachment"]
                        }
                    }
                }
            }
        }
    ],
    "linkage": {}
}
消息内容

json
{
    "name": "message_content",
    "ui": {
        "type": 20,
        "config": {
            "label": "消息内容",
            "placeholder": "请输入要发送的消息内容",
            "rule": {
                "required": true,
                "err_msg": "请输入要发送的消息内容"
            },
            "option": {
                "system_list": [
                    {
                        "label": "仪表盘",
                        "value": "var_dashboard",
                        "type": "dashboard"
                    },
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    },
                    {
                        "label": "触发人",
                        "value": "var_trigger_user",
                        "type": "trigger_user"
                    },
                    {
                        "label": "修改的工作表",
                        "value": "var_sheet_name",
                        "type": "modify_sheet_name"
                    }
                ]
            },
            "desc": {
                "info": "支持设置消息字体样式、发送图片",
                "link": "https://kdocs.cn/l/cox2efWGTUQG",
                "link_info": "查看详情"
            }
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "template_string",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "dashboard"
            },
            {
                "value": "et_file"
            },
            {
                "value": "et_range"
            },
            {
                "value": "et_sheet"
            },
            {
                "value": "dataframe",
                "multiple": true
            },
            {
                "value": "datetime"
            },
            {
                "value": "json_object"
            },
            {
                "value": "db_record",
                "multiple": true
            }
        ]
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "default_kind": "variable",
                "component_type": "cascader",
                "method_options": {
                    "need_method": true,
                    "default_method": "{\"each\":\"true\",\"format\":\"plain\"}",
                    "default_preview": "all",
                    "default_preview_text": "若有多行数据内容,将汇总为一条消息进行发送",
                    "method_list": [
                        {
                            "label": "按行分别发送",
                            "value": "{\"each\":\"true\",\"format\":\"plain\"}",
                            "kd_code": "<AlignCenterMiddle/>",
                            "preview": "each",
                            "preview_text": "若有多行数据内容,每行数据将分别发送"
                        },
                        {
                            "label": "作为整体发送",
                            "value": "{\"each\":\"false\",\"format\":\"plain\"}",
                            "kd_code": "<Matrix/>",
                            "preview": "all",
                            "preview_text": "若有多行数据内容,将汇总为一条消息进行发送"
                        }
                    ],
                    "extra_config": {
                        "db_fields_variable_desc": [
                            {
                                "type": "Attachment",
                                "key": "img_cols"
                            },
                            {
                                "type": "Contact",
                                "key": "at_contact"
                            },
                            {
                                "type": "CreatedBy",
                                "key": "at_contact"
                            }
                        ]
                    }
                },
                "allow_types": [
                    {
                        "value": "dashboard"
                    },
                    {
                        "value": "et_file"
                    },
                    {
                        "value": "et_range"
                    },
                    {
                        "value": "et_sheet"
                    },
                    {
                        "value": "dataframe"
                    },
                    {
                        "value": "datetime"
                    },
                    {
                        "value": "json_object"
                    },
                    {
                        "value": "db_record"
                    }
                ]
            }
        },
        {
            "name": "select_intelligence_header",
            "sort": 1,
            "type": 2,
            "config": {
                "default_kind": "original",
                "association_parameter_type": "et_range",
                "selectSingleRange": true,
                "intelligence_header_type": 1,
                "button": {
                    "icon": "sheet",
                    "text": "插入数据区域",
                    "block": true
                },
                "method_options": {
                    "need_method": true,
                    "default_method": "{\"each\":\"false\",\"format\":\"plain\"}",
                    "default_preview": "all",
                    "method_list": [
                        {
                            "label": "按行分别发送",
                            "value": "{\"each\":\"true\",\"format\":\"plain\"}",
                            "kd_code": "<AlignCenterMiddle/>",
                            "preview": "each"
                        },
                        {
                            "label": "作为整体发送",
                            "value": "{\"each\":\"false\",\"format\":\"plain\"}",
                            "kd_code": "<Matrix/>",
                            "preview": "all"
                        }
                    ]
                },
                "pull_rule": {
                    "params": [
                        {
                            "key": "file_id",
                            "source": "global",
                            "value": "file_id"
                        },
                        {
                            "key": "sheet_id",
                            "source": "global",
                            "value": "sheet_id"
                        },
                        {
                            "key": "sheet_name",
                            "source": "global",
                            "value": "sheet_name"
                        },
                        {
                            "key": "range",
                            "source": "outer",
                            "value": "range"
                        }
                    ],
                    "action": 8
                }
            }
        },
        {
            "name": "select_intelligence_header_range_to_img",
            "sort": 1,
            "type": 2,
            "config": {
                "association_parameter_type": "et_range",
                "selectSingleRange": true,
                "intelligence_header_type": 1,
                "button": {
                    "icon": "pic",
                    "text": "插入数据区域转图片",
                    "block": true
                },
                "component_properties": {
                    "sheet": {
                        "modal_title": "框选数据区域转为图片",
                        "modal_desc": "每次运行,将按照最新数据转为图片进行发送"
                    }
                },
                "method_options": {
                    "need_method": true,
                    "default_method": "{\"each\":\"false\",\"format\":\"markdown_image_url\"}",
                    "default_preview": "all",
                    "extra_config": {
                        "support_file_types": [
                            {
                                "file_type": "k",
                                "support_sheet_types": ["xlWorksheet"]
                            },
                            {
                                "file_type": "s"
                            }
                        ]
                    }
                },
                "pull_rule": {
                    "params": [
                        {
                            "key": "file_id",
                            "source": "global",
                            "value": "file_id"
                        },
                        {
                            "key": "sheet_id",
                            "source": "global",
                            "value": "sheet_id"
                        },
                        {
                            "key": "sheet_name",
                            "source": "global",
                            "value": "sheet_name"
                        },
                        {
                            "key": "range",
                            "source": "outer",
                            "value": "range"
                        }
                    ],
                    "action": 8
                }
            }
        }
    ],
    "linkage": {}
}
消息内容显示来源信息

json
{
    "name": "with_source",
    "ui": {
        "type": 22,
        "config": {
            "label": "",
            "placeholder": "",
            "rule": {
                "required": true
            },
            "isHideLabel": true,
            "option": {
                "opt_list": [
                    {
                        "label": "消息内容显示来源信息",
                        "value": 1,
                        "empty_value": 0
                    }
                ]
            },
            "desc": {
                "type": "textAndImage",
                "info": "",
                "link": "",
                "link_info": "",
                "img_text": "消息来源信息示例:",
                "img_url": "https://innowoa.ks3-cn-beijing.ksyuncs.com/chatflow/xiezuo20250117-145416.png"
            }
        }
    },
    "val": {
        "default": 1,
        "default_type": "number",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": false,
        "rule": {
            "required": true
        },
        "allow_types": []
    },
    "plugins": [],
    "linkage": {}
}
选择消息卡片类型按钮

json
{
    "name": "button_type",
    "ui": {
        "type": 2,
        "config": {
            "label": "选择消息卡片类型按钮",
            "placeholder": "",
            "rule": {
                "required": false,
            },
            "option": {
                "dynamic": false,
                "select_var": false,
                "show_on_mounted": true,
                "opt_list": [
                    {
                        "label": "不添加消息按钮",
                        "value": "no"
                    },
                    {
                        "label": "添加跳转链接类型的按钮",
                        "value": "url"
                    },
                    {
                        "label": "添加交互类型的按钮",
                        "value": "interactive",
                        "isDb": true
                    }
                ]
            }
        }
    },
    "val": {
        "default": "no",
        "default_type": "string",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": false
        },
        "allow_types": []
    },
    "plugins": [],
    "linkage": {
        "component_show_correlation_config": [
            {
                "id": 1,
                "patterns": ["interactive"]
            },
            {
                "id": 2,
                "patterns": ["url"]
            }
        ]
    }
}
消息卡片按钮配置(跳转链接)

json
{
    "id": 2,
    "name": "message_buttons",
    "ui": {
        "type": 43,
        "config": {
            "label": "消息卡片按钮配置",
            "placeholder": "",
            "component_properties": {
                "hiddenHoverTip": true
            },
            "isHideLabel": true,
            "isHidden": true,
            "hidden_error": true,
            "rule": {
                "required": false
            },
            "option": {
                "dynamic": false,
                "select_var": true,
                "show_on_mounted": true,
                "opt_list": [],
                "system_list": [
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    }
                ]
            }
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "original",
        "data_type": 6,
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": false
        },
        "allow_types": [
            {
                "value": "dataframe"
            },
            {
                "value": "datetime"
            },
            {
                "value": "trigger_user"
            },
            {
                "value": "trigger_button_user"
            },
            {
                "value": "db_record"
            },
            {
                "value": "json_object"
            }
        ]
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "component_type": "cascader",
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\"}"
                },
                "allow_types": [
                    {
                        "value": "dataframe"
                    },
                    {
                        "value": "datetime"
                    },
                    {
                        "value": "trigger_user"
                    },
                    {
                        "value": "trigger_button_user"
                    },
                    {
                        "value": "db_record"
                    },
                    {
                        "value": "json_object"
                    }
                ]
            }
        }
    ],
    "linkage": {
        "val_clear_names": ["button_type"]
    }
}
消息卡片按钮配置(交互按钮)

json
{
    "id": 1,
    "name": "message_buttons",
    "ui": {
        "type": 42,
        "config": {
            "label": "消息卡片按钮配置",
            "placeholder": "",
            "isHideLabel": true,
            "isHidden": true,
            "hidden_error": true,
            "rule": {
                "required": false,
            },
            "option": {
                "dynamic": false,
                "select_var": false,
                "show_on_mounted": true,
                "opt_list": [],
                "system_list": [
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    },
                    {
                        "label": "点击此消息按钮的联系人",
                        "value": "var_trigger_button_user",
                        "type": "trigger_button_user"
                    }
                ]
            }
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "original",
        "data_type": 6,
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": false
        },
        "allow_types": []
    },
    "plugins": [
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "component_type": "cascader",
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\"}"
                },
                "allow_types": []
            }
        }
    ],
    "linkage": {
        "val_clear_names": ["button_type"]
    }
}

支持组件详解

下拉菜单
下拉菜单(单选)

下拉选项模板配置完成,内容固定不动

主要配置

json
"option": {
    "dynamic": false, //非动态拉取
    "opt_list": [
        //下拉列表配置,label与value为必填字段
        {  
            "label": "文本",
            "value": "text"
        }, 
        {
            "label": "Markdown",
            "value": "markdown"
        }
    ]
    ...
}

示例

json
{
    "name": "message_type",
    "ui": {
        "type": 2,
        "config": {
            "label": "消息类型",
            "placeholder": "请选择要发送的消息类型",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "dynamic": false, // 非动态拉取
                "select_var": false,  // 默认为false
                "show_on_mounted": true, // 加载配置 默认为true
                "opt_list": [
                    // 下拉列表配置,label与value为必填字段
                    {  
                        "label": "文本",
                        "value": "text"
                    },
                    {
                        "label": "Markdown",
                        "value": "markdown"
                    }
                ]
            }
        },
        "val": {
            "default": "text",  // 默认选中text
            "defaultType": "string",  // 值类型
            "default_kind": "original",
            "associate_flow": true,
            "can_run_parameter": true,
            "rule": {
                "required": true
            },
            "allow_types": []
        },
        "plugins": [],
        "linkage": {}
    }
下拉菜单(多选)

完整示例

json
{
    "id": 1,
    "type": 1,
    "name": "导入数据",
    "desc": "获取已授权账号下评论内容、评论点赞/回复等数据",
    "config": {},
    "auth": [
        // 账号登录配置
        {
            "name": "account_id",
            "ui": {
                "type": 10,
                "config": {
                    "label": "应用凭证",
                    "placeholder": "请选择应用凭证",
                    "rule": {
                        "required": true,
                        "err_msg": "该参数为必填项"
                    },
                    "option": {}
                }
            },
            "val": {
                "default": "",
                "default_type": "number",
                "default_kind": "original",
                "associate_flow": true,
                "can_run_parameter": true,
                "rule": {
                    "required": true
                },
                "allow_types": []
            },
            "plugins": [],
            "linkage": {}
        }
    ],
    "params": [
        {
            "name": "video_id",
            "ui": {
                "type": 2,
                "config": {
                    "label": "选择视频",
                    "placeholder": "请选择,单选",
                    "rule": {
                        "required": true,
                        "err_msg": "该参数为必填项"
                    },
                    "option": {
                        "dynamic": true,
                        "select_var": false,
                        "opt_list": [],
                        "pull_rule": {
                            "params": [
                                {
                                    "key": "account_id", // 对应字段名
                                    "source": "params", // 来源,从配置入参中获取,在auth中的配置字段也为params
                                    "value": "account_id" // 值,开始默认值可随意
                                }, 
                                {
                                    "key": "douyin_video_list_max_title_length",
                                    "source": "const", // 来源:常量
                                    "value": 15
                                }
                            ],
                            "action": 7
                        }
                    }
                }
            },
            "val": {
                "default": "",
                "default_type": "string",
                "default_kind": "original",
                "associate_flow": true,
                "can_run_parameter": true,
                "rule": {
                    "required": true
                },
                "allow_types": []
            },
            "plugins": [],
            "linkage": {
                "options_correlation_names": ["account_id"],
                "val_correlation_names": ["account_id"]
            }
        }
    ]
}
  1. 全局参数获取

pull_rule除了能够从配置参数中获取,还能从全局中获得file_id以及sheet_id

json
"pull_rule": {
    "params": [
        {
            "key": "file_id",
            "source": "global",
            "value": "file_id"
        }, 
        {
            "key": "sheet_id",
            "source": "global",
            "value": "sheet_id"
        }, 
        {
            "key": "sheet_name",
            "source": "global",
            "value": "sheet_name"
        }
    ],
    "action": 8
}
  1. 设置默认值

val.default设置为默认选中的值

json
"val": {
    "default": "value",
    ...
},
多行文本
纯文本
json
{
    "id": 2,
    "name": "message_content",
    "ui": {
        "type": 21,
        "config": {
            "label": "消息内容",
            "placeholder": "输入内容或插入数据",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {},
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "template_string",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            {
                "value": "et_file"
            },
            {
                "value": "et_range"
            },
            {
                "value": "dataframe",
            },
            {
                "value": "datetime"
            },
            {
                "value": "db_record",
            },
            {
                "value": "json_object"
            }
        ]
    },
    "plugins": [],
    "linkage": {}
}
富文本
json
{
    "name": "message_content",
    "ui": {
        "type": 20,
        "config": {
            "label": "消息内容",
            "placeholder": "请输入要发送的消息内容",
            "rule": {
                "required": true,
                "err_msg": "请输入要发送的消息内容"
            },
            "option": {
                "system_list": [
                    // 可添加的自动化变量,配合select_var使用
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    }, 
                    {
                        "label": "触发人",
                        "value": "var_trigger_user",
                        "type": "trigger_user"
                    }, 
                    {
                        "label": "修改的工作表",
                        "value": "var_sheet_name",
                        "type": "modify_sheet_name"
                    }
                ]
            },
            "desc": {
                "info": "支持设置消...",
                "link": "https://www.baidu.com",
                "link_info": "查看详情"
            }
        }
    },
    "val": {
        "default": "",
        "default_type": "string",
        "default_kind": "template_string",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            // 当前组件可选的变量类型,这里不需要过滤,因此写上全部
            {
                "value": "et_file"
            }, 
            {
                "value": "et_range"
            }, 
            {
                "value": "et_sheet"
            }, 
            {
                "value": "dataframe"
            }, 
            {
                "value": "datetime"
            }, 
            {
                "value": "json_object"
            }, 
            {
                "value": "db_record"
            }
        ]
    },
    "plugins": [
        // 变量插件,选择变量使用
        {
            "name": "select_var",
            "sort": 0,
            "type": 2,
            "config": {
                "default_kind": "variable",
                "component_type": "cascader",
                "method_options": {
                    "need_method": false,
                    "default_method": "{\"each\":\"true\",\"format\":\"plain\"}"
                },
                "allow_types": [
                    {
                        "value": "dashboard"
                    }, 
                    {
                        "value": "et_file"
                    }, 
                    {
                        "value": "et_sheet"
                    }, 
                    {
                        "value": "dataframe"
                    }, 
                    {
                        "value": "datetime"
                    }, 
                    {
                        "value": "json_object"
                    }, 
                    {
                        "value": "db_record"
                    }
                ]
            }
        }
    ],
    "linkage": {}
}
扩展内容
  1. 添加系统变量

关键配置:ui.config.option,plugin

json
"option": {
    "system_list": [
        // 可选变量
        {
            "label": "当前时间",
            "value": "var_time_current",
            "type": "datetime"
        },
        {
            "label": "触发人",
            "value": "var_trigger_user",
            "type": "trigger_user"
        },
        {
            "label": "修改的工作表",
            "value": "var_sheet_name",
            "type": "modify_sheet_name"
        },
        {
            "label": "点击此消息按钮的联系人",
            "value": "var_trigger_button_user",
            "type": "trigger_button_user"
        }
    ]
}

...

"plugins": [
    // 变量插件,选择变量使用
    {
        "name": "select_var",
        "sort": 0,
        "type": 2,
        "config": {
            "default_kind": "variable",
            "component_type": "cascader",
            "method_options": {
                "need_method": false,
                "default_method": "{\"each\":\"true\",\"format\":\"plain\"}"
            },
            "allow_types": [
                {
                    "value": "dashboard"
                }, 
                {
                    "value": "et_file"
                }, 
                {
                    "value": "et_sheet"
                }, 
                {
                    "value": "dataframe"
                }, 
                {
                    "value": "datetime"
                }, 
                {
                    "value": "json_object"
                }, 
                {
                    "value": "db_record"
                }
            ]
        }
    }
],
时间选择器

图一: 图一

图二:

图三:

普通日期选择器(5)

上图一

json
{
    "id": 3,
    "ui": {
        "type": 5,
        "config": {
            "label": "查询日期",
            "placeholder": "请选择查询日期",
            "rule": {
                "required": true,
                "err_msg": "查询日期不能为空"
            },
            "component_properties": {
                "showTime": false
            },
            "option": {}
        }
    },
    "val": {
        "default": "",
        "defaultType": "datetime",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": []
    },
    "plugins": [],
    "linkage": {}
}
日期时间选择器(51)

配置示例:

json
{
  "name": "work_date",
  "ui": {
    "type": 51,
    "config": {
      "label": "选择时间",
      "placeholder": "请选择时间",
      "rule": {
        "required": true,
        "err_msg": "时间不能为空"
      },
      "component_properties": {
        "showTime": true,
        "showSecond": true
      },
      "option": {
        "system_list": [
          {
            "label": "当前时间",
            "value": "var_time_current",
            "type": "datetime"
          }
        ]
      }
    }
  },
  "val": {
    "default": "",
    "defaultType": 1,
    "name": "work_date",
    "associate_flow": true,
    "can_run_parameter": true,
    "rule": {
      "required": true
    },
    "allow_types": [
      {
        "value": "datetime"
      },
      {
        "value": "db_record"
      }
    ]
  },
  "plugins": [
    {
      "name": "select_var",
      "sort": 0,
      "type": 2,
      "config": {
        "default_kind": "variable",
        "component_type": "cascader",
        "allow_types": [
          {
            "value": "dataframe"
          },
          {
            "value": "datetime"
          },
          {
            "value": "db_record"
          },
          {
            "value": "json_object"
          }
        ],
        "method_options": {
          "need_method": false,
          "default_method": "{\"each\":\"true\",\"format\":\"plain\"}"
        }
      }
    }
  ],
  "linkage": {}
}
日期区间选择器
json
{
    "name": "date_range",
    "ui": {
        "type": 28,
        "config": {
            "label": "查询日期区间",
            "rule": {
                "required": true,
                "err_msg": "该参数为必填项"
            },
            "option": {
                "system_list": [
                    // 可选当前时间变量
                    {
                        "label": "当前时间",
                        "value": "var_time_current",
                        "type": "datetime"
                    }
                ]
            },
            "component_properties": {
                "disabledDate": [
                    // 禁止选择截至时间以及当前之间之后的日期
                    {
                        "mode": "range",
                        "value": ["1", ""]
                    }
                ]
            }
        }
    },
    "val": {
        "default": ["", ""],
        "default_type": "datetime_array",
        "default_kind": "original",
        "associate_flow": true,
        "can_run_parameter": true,
        "rule": {
            "required": true
        },
        "allow_types": [
            // 仅允许时间类型
            {
                "value": "datetime"
            }
        ]
    },
    "plugins": [
        {
            "name": "date_picker",
            "name_cn": "选择时间",
            "type": 1,
            "sort": 0,
            "config": {
                "default_kind": "original",
                "association_parameter_type": "datetime"
            }
        }, 
        {
            "name": "select_var",
            "name_cn": "选择变量",
            "type": 1,
            "sort": 0,
            "config": {
                "default_kind": "variable",
                "allow_types": [
                    {
                        "value": "datetime"
                    }
                ]
            }
        }
    ],
    "linkage": {}
}

template.json调试

官方提供了对应的插件模板,开发者可以基于插件模板进行插件功能的开发,并通过模板内置的打包命令生成插件产物,将产物上传到开放平台后,就可以通过开放平台上架和安装插件(点击下载)

插件的模板结构如下:

project

├── build/                  # 构建和运行用的文件
├── dist/                   # 构建后的输出目录
│   ├── index.js            # 插件的执行脚本
│   ├── meta.json           # 插件基础信息配置文件
│   └── template.json       # 插件参数模板配置

├── output/                 # 压缩后的发布包
│   └── dist.zip

├── node_modules/           # Node.js 依赖
├── src/                    # 插件源码目录
│   ├── common/             # 公共逻辑文件
│   └── scripts/            # 插件脚本开发目录
│       ├── meta.json       # 插件基础信息配置文件
│       └── template.json   # 插件参数模板配置

├── static/                 # 静态资源目录
├── .gitignore              # Git 忽略配置
├── package.json            # 项目依赖及脚本管理文件
├── rollup.config.js        # 打包配置文件
└── README.md               # 项目说明文件
  1. 启动本地调试服务

打开项目目录终端,执行以下命令启动本地调试服务:

shell
npm run debug:server
  1. 打开目标多维表页面

打开需要调试的多维表页面,并在 URL 后增加查询参数:?autoTaskDebug=true

示例如下:

  • 基础模式:https://www.kdocs.cn/l/XXXXXXXXX?autoTaskDebug=true
  • 已含其他参数模式:https://www.kdocs.cn/l/XXXXXXXXX?R=XXXXXXXX&autoTaskDebug=true
  1. 验证本地调试效果

页面加载后,打开自动化流程指令列表,即可看到本地开发的对应指令,表示本地调试模式已成功启用。

请确保本地调试服务(npm run debug:server)处于运行状态,否则无法加载本地指令。

index.js(执行脚本文件)

template.json (模板配置文件)章节中,我们通过成功渲染了配置页面,方便用户填写配置项。下面我们用脚本来实现"发送企业微信群聊消息"的核心逻辑:

如果你用过airscript脚本,那么恭喜你,已经成功80%了!自动化插件脚本使用了和airscript脚本相同的执行环境,所以在开发过程中,你可以先使用脚本编辑器来作为你的调试工具,后续我们会为你提供更方便的调试环境。

自动化插件在执行时,会将用户填写的配置项以Object的形式传入到脚本执行上下文中,我们通过Context.argv.params轻松地获取到配置项

格式如下:params: Record<string, string | number>

完整示例
js
function main() {
  let params = Context.argv.params // 获取用户填写的配置项
  /**
   * 请注意!!!
   * 在脚本编辑器页面中调试时没有Context.argv.params注入
   * 为了便于调试,需要增加以下调试代码
   * 在打包交付产物时需要注释掉 8~12行
   */
  if (params === undefined) {
    params = {
      webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=de08f298-9470-4e12-b4a5-9d6e16b671bc",
      msg_type: "text",
      msg_content: `测试发送企业微信消息-${new Date()}`,
    }
  }
  
 /**
   * 以下是示例核心代码:通过HTTP服务发送post请求
   */
  const { webhook, msg_type, msg_content } = params
  
  const response = HTTP.fetch(webhook, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "charset": "UTF-8",
    },
    body: JSON.stringify({
        msgtype: msg_type,
        [msg_type]: {
          content: msg_content,
        }
    }),
  });
  const jsonData = response.json();
  console.log("response data...", jsonData);
}

main();
调试方法
  1. 在多维表中新建脚本文件,并复制完整示例到文件中

  1. 点击运行按钮(F5),开始调试

  1. 由于示例中使用了HTTP服务,根据提示,要添加相关授权

  1. 重新运行并通过console.log调试你的代码

meta.json (插件描述文件)

json
{
  "app_id": "AK20250120DOTMZW",
  "plugin_id": "plg_YVEJ6B4ABEAAA",
  "name_cn": "自定义插件",
  "name_en": "custom_plugin_get_dingtalk_data",
  "instruction_desc": "副标题",
  "tags": [
    {
      "id": "jingdong_v2",
      "name": "京东自定义分组",
      "weight": 1
    }
  ],
  "automate_type": "db_sheet"
}
  • app_id:插件所属的应用 ID,用于标识该插件所属的应用,来源于开放平台应用页面。

  • plugin_id:插件的唯一标识符,来源于开放平台的应用能力页面。

  • name_cnname_en:分别表示插件的中文名和英文名。

  • instruction_desc:插件的副标题,用于展示插件的描述。

  • tags:插件的分类信息,其中 id 为分类 ID,name 为分类名称,weight 表示权重。

  • automate_type:自动化类型,可选值为:

  • "all":适用于所有类型的工作表。

  • "db_sheet":适用于多维表。

  • "et_sheet":适用于工作表。

插件上架和发布

创建应用

进入开发者后台

点击 创建应用

上传插件

进入详情页

打开插件开关,进入能力配置

上传文件

配置插件信息

插件上线

进入版本管理页面

填写版本相关信息

申请发布应用,并审核

进入企业管理后台,找到对应的应用,在应用审核页面,通过上架应用的申请

发布完成

插件发布完成界面

插件下架

下架插件只需在“应用能力”页面找到“数据连接插件”卡片然后点击关闭按钮即可。但是重新上架的话需要重新走一遍插件发布审核的逻辑。