Javascript 即使是两张google工作表之间的匹配值,仍然返回FALSE?
我已经试了好几天了,但还是没有用。我正在尝试验证gsheet“testslip”中输入的testID和电子邮件地址与gsheet“students”中输入的地址。如果两者都匹配,则gsheet“testslip”中的URL应在gsheet“students”中的匹配行中更新。否则,错误将通过电子邮件发送到gsheet“testslip”中的电子邮件地址,通知他们执行必要的操作。当我运行下面的代码时,即使两个gsheet中的两个条目都正确匹配,输出仍然是发送电子邮件时的错误。如果我删除对“不匹配”值的检查,那么输出将如预期的那样,即URL将被更新。但这样做意味着我的脚本不会处理负面的场景,这将破坏当时的目的。请帮我更正下面的代码。提前感谢您:-Javascript 即使是两张google工作表之间的匹配值,仍然返回FALSE?,javascript,validation,google-apps-script,indexing,match,Javascript,Validation,Google Apps Script,Indexing,Match,我已经试了好几天了,但还是没有用。我正在尝试验证gsheet“testslip”中输入的testID和电子邮件地址与gsheet“students”中输入的地址。如果两者都匹配,则gsheet“testslip”中的URL应在gsheet“students”中的匹配行中更新。否则,错误将通过电子邮件发送到gsheet“testslip”中的电子邮件地址,通知他们执行必要的操作。当我运行下面的代码时,即使两个gsheet中的两个条目都正确匹配,输出仍然是发送电子邮件时的错误。如果我删除对“不匹配”
function testslipupdate(){
var psheet=SpreadsheetApp.openById("1O2-xzPCjQO0cj_6LjehFnKmmTL519gXEpRYwRoEwIFA").getSheetByName("testslip");
var msheet=SpreadsheetApp.openById("1yLXRoV4MH6p_5F6rX3MnGnruDQVr4dqK-6GhRjRv3ns").getSheetByName("students");
var lrow = psheet.getLastRow();
var testID = psheet.getRange(lrow,2).getValue();
var uemail = psheet.getRange(lrow,3).getValue();
var slip = psheet.getRange(lrow,4).getValue();
var data = msheet.getDataRange().getValues();
var dtlen = data.length;
for(var i =1; i<data.length;i++){
if(data[i][0] == testID && data[i][2]==uemail){
msheet.getRange(i+1,20).setValue(slip);
break;
}
//else if(data[i][0]==testID && data[i][2]!==uemail){
else if(data[i][2]!==uemail){
MailApp.sendEmail(""+uemail+"","Email address is not matched with Test ID","","Please change to valid email address");
break;
}
//else if(data[i][0]!==testID){
else {
MailApp.sendEmail(""+uemail+"","Record not found","","Please see Principal for a new registration.");
break;
}
}
}
函数testslipupdate(){
var psheet=SpreadsheetApp.openById(“1O2-XZPCJQO0Cj6ljehfnkmmtl519Gxeprywroewia”)。getSheetByName(“测试单”);
var msheet=SpreadsheetApp.openById(“1yLXRoV4MH6p_5F6rX3MnGnruDQVr4dqK-6GhRjRv3ns”)。getSheetByName(“学生”);
var lrow=psheet.getLastRow();
var testID=psheet.getRange(lrow,2.getValue();
var uemail=psheet.getRange(lrow,3.getValue();
var slip=psheet.getRange(lrow,4.getValue();
var data=msheet.getDataRange().getValues();
var dtlen=data.length;
对于(var i=1;i,以下是我找到解决方案后查看的代码:-
function testslipupdate(){
var psheet=SpreadsheetApp.openById("1O2-xzPCjQO0cj_6LjehFnKmmTL519gXEpRYwRoEwIFA").getSheetByName("testslip");
var msheet=SpreadsheetApp.openById("1yLXRoV4MH6p_5F6rX3MnGnruDQVr4dqK-6GhRjRv3ns").getSheetByName("students");
var lrow = psheet.getLastRow();
var testID = psheet.getRange(lrow,2).getValue();
var uemail = psheet.getRange(lrow,3).getValue();
var slip = psheet.getRange(lrow,4).getValue();
var data = msheet.getDataRange().getValues();
var dtlen = data.length;
var qrow = data.findIndex(qID=> {return qID[0] == quoteID});
var mrow = data.findIndex(mailID=> {return mailID[2] == uemail});
var mqrow=qrow+1;
var mmrow=mrow+1;
if(mqrow==0){
MailApp.sendEmail(""+uemail+","Record not found","","Please see Principal for a new registration.");
}
else if(mqrow!=0&&mmrow==0){
MailApp.sendEmail(""+uemail+","Email address is not matched with Test ID","","Please change to valid email address");
}else{
msheet.getRange(mqrow,20).setValue(slip);
}
}
如果不查看您的数据,则很难进行故障排除-您提供了yur代码中的电子表格ID,但无法访问电子表格。请提供对样本电子表格的访问以进行故障排除。如果(数据[i][2]!==uemail){
或如果(数据[i][0]==testID和数据[i][2]!==uemail),您的问题是否与行有关{
?当您说时,即使两个gsheet中的两个条目都正确匹配,输出仍然是通过电子邮件发送的错误
-这是否意味着如果(data[i][0]==testID和data[i][2]==uemail)您没有输入案例
?感谢您的输入。在搜索和尝试解决方案之后,我终于成功地操作了MWaheed之前提供的解决方案(方法2:使用Array.prototype.findIndex())对于StackOverFlow中提出的一个问题,我们可以通过下面的链接进行参考:-我非常欣赏这个方法2,它不仅用if-then-else语句正确地给出了结果,而且搜索方法比通常建议的其他方法快得多。我希望分享我的审阅代码,但我不知道如何在这是我自2014年以来第二次发布问题。ok@ziganotschka抱歉,我还不熟悉这个平台。因此,我只是按照建议进行了更改。谢谢。