昨晚分享的工作流插件,借此帖抛转引玉一下~
欢迎大家分享自己写的有意思的插件,特别有意思的不建议分享了,未来可以上插件市场 👀️
该插件功能:对指定表单,指定字段识别重复记录,一键去重。
解决场景:记录去重人工繁琐,子流程处理工作流消耗大
核心思路:
主要步骤及部分原码如下:
1.调获取应用信息,处理返回结果,取出 worksheetid
const heroes = JSON.parse(input.arrayObject || '[]');
const sheetName = input.sheetName;
const hero = heroes.find(hero => hero.name === targetName);
let result;
if (hero) {
result = hero.id;
} else {
result = null;
}
output = {result:result}
2.调用列表接口,处理返回,取出字段值相同的 rowid
// 输入的数据数组
const data = JSON.parse(input.arrayObject || '[]')
// 函数:检查数组中是否有重复的字段值,并返回所有重复的id
function findDuplicateIds(data, field) {
const fieldMap = {};
const duplicateIds = new Set();
data.forEach(item => {
const value = item[field];
if (fieldMap[value]) {
duplicateIds.add(item.rowid);
duplicateIds.add(fieldMap[value]);
} else {
fieldMap[value] = item.rowid;
}
});
return Array.from(duplicateIds);
}
// 要检查的字段
const fieldToCheck = input.target;
// 找出所有重复的id
const duplicateIds = findDuplicateIds(data, fieldToCheck);
// 输出结果
output = {duplicateIds}
3.批量更新重复记录,做标记