Как я могу определить, являются ли данные недействительными в поле проверки данных с помощью Google Script? - PullRequest
1 голос
/ 10 июля 2019

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

Шаблон включает в себя критерии проверки данных, и я бы хотел, чтобы мой сценарий подобрал, если какие-либо входные данные недопустимы в соответствии с правилом проверки данных.Правило требует, чтобы входные данные соответствовали диапазону.

К вашему сведению - я новичок в этом деле.

Я поиграл с подметодами, содержащимися в SpreadsheetApp.newDataValidation (), но не нашел того, что искал,Я попытался реализовать метод .setAllowInvalid(false) для предотвращения неправильных вводов, однако он не предупреждает пользователя, когда данные копируются в диапазон из Excel - даже если правило проверки данных в этом диапазоне не изменяется.

В настоящее время у меня есть скрипт проверки каждой ячейки с сравниваемыми диапазонами данных, но это занимает слишком много времени.Некоторые диапазоны данных в правиле проверки данных имеют более 5000 ячеек, и сценарий может занять более 10 минут, если пользователь вводит более 400 строк.

function setDataValidation(sheet, fRow, fCol, numRows, numColumns, account, valid) {
  var data = sheet.getRange(fRow, fCol, numRows, numColumns);
  var rule = SpreadsheetApp.newDataValidation()
    .requireValueInRange(data, true)//(range, dropdown Boolean)
    .setAllowInvalid(valid)
    .build()

   InputSht.getRange(
    FirstDataRowI,
    InputSht.createTextFinder(account).findNext().getColumn(), 
    LastRowI)
   .setDataValidation(rule)
}

Я бы хотел, чтобы мой сценарий возвратил «неверный»если входные данные в диапазоне, содержащем правило проверки данных, недопустимы.

Что-то вроде:

function fillData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var lastRow = ss.getLastRow()

  for (i = 0; i < lastRow; i++) {
    aData[i] = isValid(sheet.getRange(i+1, 1))
  }

  for(i=0;i<aData.length;i++) {
    if (aData[i] == false) {
      //here I'll place my code to determine my final output
    }
  }
}

function isValid(valid) {
  var valid = true
  //code that sets valid to false if invalid
  return valid
}

Очевидно, я не понимаю, о чем говорю, но, надеюсь, у кого-то есть пониманиена это.

Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...