gpt4 book ai didi

Javascript/Google Apps 脚本比较 2 个数组,返回不匹配的项目

转载 作者:行者123 更新时间:2023-11-28 18:23:15 24 4
gpt4 key购买 nike

目标:将与会者列表与受邀者列表进行比较,并向未参加的人员发送电子邮件提醒。

方法:我尝试比较 2 个数组 [邀请和出席] 并返回每个数组中未找到的项目,即未参加培训的项目,以便我可以触发电子邮件提醒。

我陷入了困境,对解决方案一无所知。我当前的代码比较这两个数组并返回匹配项。如果我将 if 语句条件设置为 if (value[x] !== value[y]) {Logger.log[x]} 我会看到相当不受欢迎的输出。

当前功能如下:

function getAttendees() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Attendees');

var inviteSheet = ss.getSheetByName('Invitees');
var inviteLRow = inviteSheet.getLastRow();
var inviteRange = inviteSheet.getRange("K2:K" + inviteLRow);
var getInvite = inviteRange.getValues();

var attendLRow = sheet.getLastRow();
var getAttendRange = sheet.getRange("A2:A" + attendLRow)
var getAttend = getAttendRange.getValues();

for (var v = 0; v < getAttend.length; v++) {
var vn = v + 2;
for (var e = 0; e < getInvite.length; e++) {
var en = e + 1;

if (getAttend[v].toString() !== getInvite[e].toString()) {
Logger.log(getAttend[v] + " attended training.");
}
}
}
}

如果我可以返回不在“与会者”数组中的项目,我就可以触发电子邮件功能(很确定我已经在包里了。)

任何帮助将不胜感激。会为修复它的人购买数字咖啡...如果我弄清楚了,我就会得到咖啡。

最佳答案

简短回答

the script 的 Google Apps 脚本兼容版本通过 Redu

function missed(invited,attended){
return invited.filter(function(e){return attended.indexOf(e) === -1});
}

适应OP案例

简短回答中的脚本适用于“简单”数组,我们需要展平要作为参数传递的对象,在本问题 getInvite 和 getAttend 的情况下,使用以下模式,

2DArray
.reduce(function(a, b) {return a.concat(b);}, [])

将上述内容应用到OP代码中,

function getAttendees() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Attendees');

var inviteSheet = ss.getSheetByName('Invitees');
var inviteLRow = inviteSheet.getLastRow();
var inviteRange = inviteSheet.getRange("K2:K" + inviteLRow);
//flattened array of invitees
var getInvite = inviteRange.getValues()
.reduce(function(a, b) {return a.concat(b);}, []);

var attendLRow = sheet.getLastRow();
var getAttendRange = sheet.getRange("A2:A" + attendLRow)

//flattened array of attendees
var getAttend = getAttendRange.getValues()
.reduce(function(a, b) {return a.concat(b);}, []);

//Items with no match
Logger.log(missed(getInvite,getAttend).join(', '))

}

备注

如果您复制上述代码,请不要忘记也复制简答部分中的代码。

引用文献

Flatten an array of arrays

关于Javascript/Google Apps 脚本比较 2 个数组,返回不匹配的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com