Динамическая генерация вопросов в Google Forms без создания новых столбцов

#javascript #google-apps-script #google-sheets #google-forms

#javascript #google-apps-script #google-sheets #google-forms

Вопрос:

Я пытаюсь создать форму Google, в которой вопрос динамически генерируется скриптом.

Форма предназначена для сбора результатов проверок продукта, которые могут привести к пропуску или сбою. Проверки возникают в результате проблемы с продуктом и продолжаются в течение определенного периода времени, пока проблема не будет решена, после чего они закрываются.

В настоящее время у меня есть форма, настроенная как веб-приложение, которое при открытии будет генерировать элемент сетки с несколькими вариантами выбора на основе проверок, которые требуются в данный момент.

Форма извлекает все текущие активные проверки из связанной электронной таблицы и генерирует параметры вопроса на основе этих данных. Однако скрипт создает новый набор столбцов при каждом открытии формы, даже если многие из них являются одной и той же проверкой.

Есть ли способ генерировать новый столбец только в том случае, если добавленный вопрос является новым? И если вопрос не является новым, могут ли ответы на этот вопрос быть перенаправлены в исходный столбец в электронной таблице?

Спасибо.

 function doGet(){
    
  var form = FormApp.openById("###");
  
  var workBook = SpreadsheetApp.openById("###");
  
  var sheet = workBook.getSheetByName("###");
  
  var range = "A:B";
  
  var options2DArr = sheet.getRange(range).getValues();
  var options = [];
  for (var i = 0; i < options2DArr.length; i  ) 
        {
              if (options2DArr[i][0] != "")
              {
                options.push(options2DArr[i][1]   " ("   options2DArr[i][0]   ")");
              }
    
  }
  
  myCheckBoxItem = form.getItemById("###").asGridItem();
  currentRows = myCheckBoxItem.getRows();
  myCheckBoxItem.setTitle('Inspection Results')
  .setRows(options)
  .setColumns(['Pass', 'Fail']);
  
  var URL = form.getPublishedUrl();
  // redirect to the prefilled form URL dynamically created above 
  return HtmlService.createHtmlOutput("<script>window.top.location.href=""   URL   ""</script>");

}
  

Комментарии:

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

2. Результат прохождения / сбоя должен быть сохранен под столбцом на основе вопроса. Так, например, результат первой проверки должен быть сохранен в столбце «Проверка 1». Проверка 1 может использоваться в течение нескольких недель, прежде чем будет удалена. Проблема в том, что каждый раз, когда форма обновляется списком проверок (например, из-за введения проверки 2), создается еще один столбец «Проверка 1», и все будущие результаты проверки 1 попадают в этот столбец, а не в оригинал. Таким образом, в итоге получается более 20 столбцов «Проверка 1», но я хочу, чтобы они были в одном и том же.

3. Если бы вы могли предоставить скриншот того, как он выглядит в настоящее время и как бы вы хотели, чтобы он выглядел — это было бы очень полезно для понимания!

4. Вы используете Google Form или веб-приложение?

5. Это скрипт веб-приложения, ведущий к форме Google. Я опубликую скриншот завтра, когда буду на работе. Спасибо за ответ.