Проверка формы на основе значений из электронной таблицы - PullRequest
0 голосов
/ 08 марта 2020

Я хотел бы проверить текстовые записи в форме Google, сравнивая их со списком строк в электронной таблице (что-то вроде «4ycTU»). Оба файла, форма и таблица, находятся в одном каталоге. До сих пор я получил строковые значения в массиве, но не могу понять, как их сравнить с пользовательской текстовой записью в валидации.

 function idValidation() {
  // get the form directory 
  var form = FormApp.getActiveForm();
  var formFile = DriveApp.getFileById(form.getId());
  var folder = formFile.getParents().next();

  // get data from the spreadsheet in an array
  var idSheetID = folder.getFilesByName("identificativi").next().getId();
  var idSheet = SpreadsheetApp.openById(idSheetID).getActiveSheet();      
  var idValues = idSheet.getRange(1,2,idSheet.getLastRow()).getValues();

  // create the validation rule
  var idVal = Formapp.createTextValidation();
                     .setHelpText("Inserisci un codice identificativo valido.");
                     .??? 
  }

Есть ли способ сделать это? Большое спасибо.

1 Ответ

2 голосов
/ 10 марта 2020
  • Вы хотите создать текстовый элемент для активной формы Google.
  • Вы хотите назначить правило проверки текстовому элементу.
  • Вы хотите использовать значения из Google Spreadsheet как правило проверки.
  • Вы хотите, чтобы пользователи вводили значения, совпадающие со значениями, полученными из Google Spreadsheet.

Если мое понимание верно, как насчет этот ответ? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точки модификации:

  • В этом случае требуется создать значение проверки. Затем созданное правило проверки помещается в текстовое время и добавляется в форму Google.

Модифицированный скрипт:

Когда ваш скрипт изменяется, он становится следующим.

С:
var idVal = Formapp.createTextValidation();
                   .setHelpText("Inserisci un codice identificativo valido.");
                   .??? 
До:
var pattern = "^" + idValues.map(function([e]) {return e}).filter(String).join("|") + "$";
var idVal = FormApp.createTextValidation().requireTextMatchesPattern(pattern).build();
form.addTextItem()
  .setHelpText("Inserisci un codice identificativo valido.")
  .setValidation(idVal)
  .setTitle("title");

Примечание:

  • В этом измененном сценарии предполагается, что значения idValues имеют ожидаемые значения.
  • В этом случае, если введенные значения совпадают со списком значений, извлеченных из электронной таблицы, значения могут быть введены. Если вы хотите использовать contains, измените pattern и idVal в приведенном выше сценарии следующим образом.

    var pattern = idValues.map(function([e]) {return e}).filter(String).join("|");
    var idVal = FormApp.createTextValidation().requireTextContainsPattern(pattern).build();
    

Ссылки:

Добавлено:

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

С:

form.addTextItem()
  .setHelpText("Inserisci un codice identificativo valido.")
  .setValidation(idVal)
  .setTitle("title");

Кому:

form.getItemById(itemId).asTextItem()
  .setHelpText("Inserisci un codice identificativo valido.")
  .setValidation(idVal)
  .setTitle("title");

или

form.getItems()[0].asTextItem()
  .setHelpText("Inserisci un codice identificativo valido.")
  .setValidation(idVal)
  .setTitle("title");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...