Я создаю шаблон в 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
}
Очевидно, я не понимаю, о чем говорю, но, надеюсь, у кого-то есть пониманиена это.
Есть мысли?