我有一个Google表格,可以用作学校内摄像设备的简单签入/签出系统。
每个学生都佩戴一张ID卡,该ID卡在扫描时会返回BASKET范围内的唯一编号(A2:A20)。 ID号如下:16-293914
当我将学生证卡扫描到篮子中时,我希望脚本从list of Students(W22:W166)查找该编号,并将与ID编号匹配的学生姓名返回到NAME单元格(D3 )。
例如:
号码被扫描到购物篮中。
如果StudentID中有一个公共值。
将学生的名字+姓氏返回到单元格E3。
运行checkOut()函数。
如果不匹配:什么也不做。
这是我的脚本,有人知道我在做什么错吗?
//student name auto fill
function onEdit(e) {
var basket = sheet.getRange('A2:A20').getValues();
var name = sheet.getRange("D3").getValue();
var studentID = sheet.getRange('W22:W166').getValues();
var firstName = sheet.getRange('Y22:Y166').getValues();
var lastName = sheet.getRange('X22:X166').getValues();
for(var i=0;i<studentID.length;i++) {
for(var j=0;j<basket.length;j++) {
if(studentName[i][0]==basket[j][0]){
name[i][0]= firstName + lastName;
}
}
}
checkOut()
}
答案 0 :(得分:1)
这是我想出的。
function onEdit(e) {
//Not sure where your 'sheet' variable comes from. If it's global you will want to remove this next line.
var sheet = e.source.getActiveSheet(); //OR e.source.getSheetByName("<YOUR SHEET NAME>");
var basket = sheet.getRange('A2:A20').getValues();
var name = sheet.getRange("D3");
var studentID = sheet.getRange('W22:W166').getValues();
// These are kind of wasteful, lets wait to pull just the first and last name we need.
//var firstName = sheet.getRange('Y22:Y166').getValues();
//var lastName = sheet.getRange('X22:X166').getValues();
var flag = false; //Flag lets us know later if match was found.
for(var i=0;i<studentID.length;i++) {
for(var j=0;j<basket.length;j++) {
if(studentID[i][0] !== "" && basket[j][0] !== "" && studentID[i][0]==basket[j][0]){
var sName = sheet.getRange("X"+(22+i)+":Y"+(22+i)).getValues(); //Now get the name... This is a bit weird, but it works. Normally I'd use other getRange() params.
name.setValue(sName[0][1] + " " + sName[0][0]); //Set cell D3 to firstname lastname.
flag = true;
}
}
}
if(flag) checkOut(); //Only run if match found.
}