请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

NYZMIS
金牌服务用户   /  发表于:2025-7-4 16:59  /   查看:98  /  回复:13
1金币
我就用excel来描述

表格中的数据如下:不同设备有对应的判定结果,不同设备还有保管人,想将判定结果为NG的设备通知保管人,我之前的做法是一个设备一个设备的邮件通知,但是这样会出现如果一个保管人下面有多台设备判定NG,就会收到多个邮件,希望想优化成同一个保管人仅收到一封NG通知邮件,这样按保管人来汇总发出对应NG邮件,就不会出现同一个人收到多笔邮件的现象
这个需求我就想了解如何获取表格中所有判定NG的设备信息,然后通过这些NG设备再去设备表里查询对应的保管人,再按保管人进行group by 分组,然后再进行邮件发送

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

13 个回复

倒序浏览
Levi.Zhang
超级版主   /  发表于:2025-7-4 17:34:10
沙发
大佬,前两步比较好做,通过设置变量命令和关联字段应该就可以拿到设备信息和对应的保管人
第三步您是想根据保管人拿到他的对应设备信息;然后再给对应的保管人发送他的NG设备信息邮件吗?
group by这样吗?
张三:
test3
test8

李四:
test5
test15
回复 使用道具 举报
goo
金牌服务用户   /  发表于:2025-7-4 18:07:17
板凳
  1. <blockquote>// 获取表格
复制代码
回复 使用道具 举报
goo
金牌服务用户   /  发表于:2025-7-4 18:07:17
地板
  1. // 1获取表格
复制代码
回复 使用道具 举报
goo
金牌服务用户   /  发表于:2025-7-4 18:07:57
5#
本帖最后由 goo 于 2025-7-4 18:09 编辑
  1. <blockquote>// 获取表格
复制代码

这个代码块控件有问题,吞内容
回复 使用道具 举报
goo
金牌服务用户   /  发表于:2025-7-4 18:08:18
6#
本帖最后由 goo 于 2025-7-4 18:09 编辑


供参考
// 获取表格

/**
* [{序号:1,设备:a,保管人:甲,判定结果:NG},{序号:2,设备:b,保管人:甲,判定结果:NG},{序号:3,设备:c,保管人:甲,判定结果:OK}]
*/

var table1 = Forguncy.Page.getListView("table1");
table1.selectAllRows();
var list1 = table1.getSelectedRowsData();

// 按保管人分组,只收集判定结果为NG的设备
/**[{保管人:甲,设备:[a,b]}] */
var list2 = [];
var tempMap = {}; // 临时映射表用于分组

list1.forEach(function(item) {
    // 只处理判定结果为NG的记录
    if (item.判定结果 === "NG") {
        if (!tempMap[item.保管人]) {
            // 如果该保管人不存在于映射表中,则创建新条目
            tempMap[item.保管人] = {
                保管人: item.保管人,
                设备: [item.设备]
            };
        } else {
            // 如果已存在,则添加到设备数组
            tempMap[item.保管人].设备.push(item.设备);
        }
    }
});

// 将映射表转换为数组
list2 = Object.values(tempMap);

// 将结果添加到table2
var table2 = Forguncy.Page.getListView("table2");
table2.deleteAllRows(); // 先清空表格
list2.forEach(item => {
    table2.addNewRow(item);
});

评分

参与人数 1金币 +5 收起 理由
Levi.Zhang + 5 赞一个!

查看全部评分

回复 使用道具 举报
NYZMIS
金牌服务用户   /  发表于:2025-7-5 23:02:32
7#
Levi.Zhang 发表于 2025-7-4 17:34
大佬,前两步比较好做,通过设置变量命令和关联字段应该就可以拿到设备信息和对应的保管人
第三步您是想根 ...

是的,怎么在表格里比较方便的拿到所有NG的设备资料呢?  不会是要循环表格然后再判断后组字串吧?
回复 使用道具 举报
NYZMIS
金牌服务用户   /  发表于:2025-7-5 23:02:54
8#
goo 发表于 2025-7-4 18:08
供参考
// 获取表格

这位大哥,感觉有点看不懂你发的内容诶~~~
回复 使用道具 举报
Levi.Zhang
超级版主   /  发表于:7 天前
9#
NYZMIS 发表于 2025-7-5 23:02
是的,怎么在表格里比较方便的拿到所有NG的设备资料呢?  不会是要循环表格然后再判断后组字串吧?

大佬,TEXTJOIN函数可以试试哦~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
NYZMIS
金牌服务用户   /  发表于:7 天前
10#
Levi.Zhang 发表于 2025-7-7 08:49
大佬,TEXTJOIN函数可以试试哦~

您好,使用另一个函数TEXTJOINIF可以得到需要的资料,那得到想到的资料,再想根据这些资料获取保管人员的数据,是不是先去查询设备表,然后将查出来的保管人去重,再根据去重后的保管人信息查询设备表(筛选条件设备编号在第一步获取的资料里),然后再进行邮件发送,我这样的逻辑合适吗?感觉有点重复步骤,  有没有更简单点的逻辑呢?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部