2016-03-30 1 views
0

У меня есть таблица со сценарием, который проверяет другую таблицу для имени клиента и возвращает код связанного клиента. Он отлично работает, пока имя клиента находится в листе «CustomerCodes», на котором он ссылается. Если имя клиента там не существует, я бы хотел установить значение переменной «customerCode» в «Нет совпадения найдено». Сейчас он просто выдает ошибку и больше не запускает скрипт. Вот код:Задайте другое значение var, если цикл "for" возвращает ошибку

var customerName = sheet.getRange('I2').getValue(); 
 
    
 
    var ccsheet = ss.getSheetByName("CustomerCodes"); 
 
    var lastRow = ccsheet.getLastRow(); 
 
    
 
    Logger.log("lastRow: " + lastRow); 
 
    
 
    var lookUp = ccsheet.getRange(2, 1, lastRow, 3).getValues(); 
 
    
 
    for (nn=0; nn<lookUp.length; ++nn) { 
 
    if (lookUp[nn][0] == customerName) {break} 
 
    } 
 

 
    //This is where I am having the trouble 
 
    var customerCode = lookUp[nn][1]; 
 
    
 
    Logger.log("customerCode: " + customerCode);

Таким образом, если «за» цикл не найден, то установите «customerCode» переменный в этот матч. Если он не находит совпадения, я бы хотел, чтобы переменная «customerCode» указывала «Нет совпадения», поэтому пользователь знает, почему код клиента не был возвращен. Значение переменной «customerCode» возвращается пользователю позже в функции.

Я не очень хорошо разбираюсь в обработке ошибок, так как я действительно новичок во всем этом, и я не смог найти документацию по скриптам приложений Google, которая хорошо объяснила это. Большое спасибо за Вашу помощь!

+1

Какая ошибка? – epascarello

+0

Ошибка, которую я получаю, это: «TypeError: Невозможно прочитать свойство« 1 »из undefined (строка 32, ...). Строка 32 - это место, где я помещаю // Это то, что у меня возникает. – JLBJones

+0

I haven У меня был шанс попробовать ваше решение, но похоже, что он сработает. Спасибо! – JLBJones

ответ

1

Для информации, есть на самом деле много способов, чтобы получить результат, который вы хотите ... Более простой и читаемым образом будет выглядеть следующим образом :

var customerCode = 'no customer with this ID found in the list'; 
for (var nn=0; nn<lookUp.length; ++nn) { 
    if (lookUp[nn][0] == customerName) { 
     customerCode = lookUp[nn][1]; 
     break; 
    } 
} 

который возвращает конечно тот же самый результат, но избегает использовать короткую форму IF THEN ELSE заявление (так называемый тройной оператор), используемый выше.

+0

Спасибо. Это похоже на более простое решение. – JLBJones

2

Итак, добавьте код, чтобы узнать, есть ли у вас совпадение. Другой вариант, чтобы проверить, если переменная пп меньше, чем длина

var matchIndex = -1; 
for (var nn=0; nn<lookUp.length; ++nn) { 
    if (lookUp[nn][0] == customerName) { 
     matchIndex=nn; 
     break; 
    } 
} 

//This is where I am having the trouble 
var customerCode = matchIndex===-1 ? "Not found" : lookUp[matchIndex][1]; 
+0

Отлично работает! Что такое термин, который описывает эту строку, чтобы я мог больше узнать об этом? var customerCode = matchIndex == = -1? «Не найдено»: lookUp [matchIndex] [1]; – JLBJones

+0

ternary operator – epascarello

+0

Perfect. Я буду искать информацию о тройных операторах и узнавать, как их использовать. Спасибо, что указали мне на правильные справочные материалы. – JLBJones

Смежные вопросы