【发布时间】:2020-11-10 01:12:17
【问题描述】:
我已经尝试了几天,但仍然无济于事。我正在尝试验证在 gsheet“testslip”中输入的 testID 和电子邮件地址与在 gsheet“students”中输入的那些。如果两者都匹配,则来自 gsheet“testslip”的 URL 将在匹配行的 gsheet“students”中更新。否则,错误将通过电子邮件发送到 gsheet "testslip" 中的电子邮件地址,以通知他们采取必要的措施。当我运行下面的代码时,即使两个 gsheets 中的两个条目都正确匹配,输出仍然是通过电子邮件发送的错误。如果我删除对“不匹配”值的检查,那么输出将如预期的那样,即 URL 将被更新。但这样做意味着我的脚本不能处理负面情况,那样会破坏目标。请帮助我更正下面的代码。提前谢谢你:-
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;
}
}
}
【问题讨论】:
-
如果不查看您的数据就很难排除故障 - 您在代码中提供了电子表格 ID,但无法访问电子表格。请提供对示例电子表格的访问权限以进行故障排除。
-
您的问题与
else if(data[i][2]!==uemail){或else if(data[i][0]==testID && data[i][2]!==uemail){行有关吗?当你说even both entries in both gsheets are matched correctly, the output is still the error being emailed- 是不是意味着你没有进入案例if(data[i][0] == testID && data[i][2]==uemail)? -
感谢您的意见。在搜索和尝试解决方案之后,我终于设法操纵了 MWaheed 早些时候提供的解决方案(方法 2:使用 Array.prototype.findIndex())解决 StackOverFlow 中提出的问题,我们可以通过以下链接参考:-stackoverflow.com/questions/32565859/…I非常感谢这个方法 2,它不仅用 if-then-else 语句正确地给了我结果,而且搜索方法比通常建议的其他方法快得多。
-
我希望分享我审核过的代码,但我不知道如何在此处执行此操作,因为这是我自 2014 年以来第二次发布问题。
-
ok @ziganotschka 抱歉,我还不熟悉这个平台。所以,我只是按照建议进行了更改。谢谢。
标签: javascript validation google-apps-script indexing match