Можно ли использовать скрипт Google Apps, чтобы форма Google отображала случайный текст из листа Google? - PullRequest
2 голосов
/ 29 марта 2020

Скажем, у меня есть список из 1000 животных в Google Листе (например, собака, кошка, корова, ..., жираф). Я хотел бы, чтобы форма Google произвольно выбирала одного из этих животных каждый раз, когда респондент открывает форму.

Например, Вы когда-нибудь видели __________?

Здесь пробел будет другим для каждого респондента (если только им не повезло случайным образом получить подходящих животных).

В настоящее время у меня есть код для случайного выбора животного из листа Google, но я не могу понять, как случайным образом выбрать животное для каждого респондента, поскольку функция onOpen () не может запускаться для каждого респондента, но только когда владелец открывает форму.

function onOpen(e){
  var animals = worksheet.getRange(2, 1, worksheet.getLastRow()-1, 1)
              .getValues()
              .map(function(o){ return o[0]})
              .filter(function(o){return o !== ""});
  //Logger.log(animals)

  // get random animal
  var animal = animals[Math.floor(Math.random()*animals.length)];

  Logger.log(animal);
  var id = getBlockIdFromTitle()
  Logger.log(id) 

  if (id !== -1){
    updateLink(id, animal)
  }
}

Любые советы о том, как изменить мой код или сделать совершенно другой подход для достижения будут оценены те же результаты. Спасибо!

1 Ответ

1 голос
/ 30 марта 2020

Вместо onOpen триггера используйте устанавливаемый onFormSubmit триггер

Это позволит вам обновить вопрос формы после того, как респондент отправил форму.

Пример:

function onFormSubmit(e){
  var animals = worksheet.getRange(2, 1, worksheet.getLastRow()-1, 1)
              .getValues()
              .map(function(o){ return o[0]})
              .filter(function(o){return o !== ""});
  //Logger.log(animals)

  // get random animal
  var animal = animals[Math.floor(Math.random()*animals.length)];
  FormApp.openById("XXX").getItems()[0].asTextItem().setTitle("Have you ever seen a " + animal + "?");
  }
}

Mind:

  • Поскольку вопрос будет обновляться только при отправке формы, респонденты, которые откроют форма до того, как предыдущий респондент завершит отправку, не увидит другую версию формы.

  • Однако в настоящее время нет другого варианта динамического изменения содержания вопроса для каждого респондента.

  • Если это полезно для вас - есть варианты перемешать порядок вопросов и вариантов ответов для разных респондентов.

...