Чтение и проверка нескольких значений одновременно с другого листа Google с помощью if () - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь настроить скрипт, который выбирает значения из другого листа и сравнивает их (используя if()) со значениями, введенными через ui.prompts в активном листе.

Пользователь должен ввести значения в ui.prompt, которые должны соответствовать значениям, хранящимся на другом листе, если они совпадают, тогда он запускает другую функцию.

Я написал приведенный ниже код, который, к сожалению, не работает - я думаю, что может быть несколько проблем с тем, как я написал функции if() и for(), но я не могу это понять - может кто-нибудь помочь, пожалуйста?

Код следующий:

function firstOpen() {
  var sheet = SpreadsheetApp.openById("1HsE2Smq6iSkNxvonEOTOmz54MfzWJduWoNA5P6xaKxk").getSheetByName('Users');
  var range = sheet.getDataRange();
  var values = range.getDisplayValues();
  var lastRow = range.getLastRow();
  var sh = SpreadsheetApp.getActive().getSheetByName("BALANCE SHEET");
  var getAccNo = ui.prompt('Login', 'Please enter your account number:', ui.ButtonSet.OK);
  var getSgEm = ui.prompt('Login', 'And your subscriber email address:', ui.ButtonSet.OK);
  var sgCode = ui.prompt('Login', 'Finally, your subscription code:', ui.ButtonSet.OK);
  sh.getRange('AI30').setValue(getAccNo);
  sh.getRange('AI31').setValue(getSgEm);
  sh.getRange('AI32').setValue(sgCode);
  var accNo = sh.getRange('AI30').getValue(); // user entered acc no
  var sgEmail = sh.getRange('AI31').getValue(); // user entered subscriber email
  var subCode = sh.getRange('AI32').getValue(); // user entered subscriber code (as on email)

  for (var i = 1; i < lastRow; i++)
  {
    if (subCode == values[i][3] && accNo == values[i][4] && sgEmail == values[i][5])
    {
      ui.alert('Success', 'You have entered details correctly', ui.ButtonSet.OK);
      sortOutSheets();
    }
    else
    {
      ui.alert('Failed', 'The details were incorrect.', ui.ButtonSet.OK);
    }
  }
}

1 Ответ

2 голосов
/ 25 февраля 2020

Возвращение для ui.prompt('Login', 'Please enter your account number:', ui.ButtonSet.OK); - это не просто значение. Это объект с именем Класс PromptResponse

Методы

getResponseText ()

getSelectedButton ()

интерфейс не определен в вашем коде

function firstOpen() {
  var sheet = SpreadsheetApp.openById("1HsE2Smq6iSkNxvonEOTOmz54MfzWJduWoNA5P6xaKxk").getSheetByName('Users');
  var range = sheet.getDataRange();
  var values = range.getDisplayValues();
  var lastRow = range.getLastRow();
  var sh = SpreadsheetApp.getActive().getSheetByName("BALANCE SHEET");
  var ui=SpreadsheetApp.getUi();//this defines ui
  var getAccNo = ui.prompt('Login', 'Please enter your account number:', ui.ButtonSet.OK).getResponseText();
  var getSgEm = ui.prompt('Login', 'And your subscriber email address:', ui.ButtonSet.OK).getResponseText()
  var sgCode = ui.prompt('Login', 'Finally, your subscription code:', ui.ButtonSet.OK).getResponseText();
  sh.getRange('AI30').setValue(getAccNo);
  sh.getRange('AI31').setValue(getSgEm);
  sh.getRange('AI32').setValue(sgCode);
  var accNo = sh.getRange('AI30').getValue(); // user entered acc no
  var sgEmail = sh.getRange('AI31').getValue(); // user entered subscriber email
  var subCode = sh.getRange('AI32').getValue(); // user entered subscriber code (as on email)
  for (var i = 1; i < lastRow; i++) {
    if (subCode == values[i][3] && accNo == values[i][4] && sgEmail == values[i][5]) {
      ui.alert('Success', 'You have entered details correctly', ui.ButtonSet.OK);
      sortOutSheets();
    } else {
      ui.alert('Failed', 'The details were incorrect.', ui.ButtonSet.OK);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...