Если между двумя диапазонами есть общее значение, отобразите это значение - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть лист Google, который я использую в качестве простой системы регистрации / вывода для операторского оборудования в школе.

Каждый учащийся носит идентификационную карту, которая после сканирования возвращает уникальный номер КОРЗИНА диапазон (A2: A20).Идентификационные номера выглядят так: 16-293914

Когда я сканирую идентификационную карточку студента в корзину, я хочу, чтобы скрипт искал этот номер из списка Студентов (W22:W166) и верните имя ученика, соответствующее номеру ID, в ячейку ИМЯ (D3).

Например:Номер сканируется в корзину.Если в студенческом идентификаторе есть общее значение.Верните firstName + lastName студента в ячейку 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()
}

1 Ответ

0 голосов
/ 20 февраля 2019

Вот что я придумал.

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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...