Google скрипт формирует ListItem: как настроить pageBreakItems для каждого выбора? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть вопрос о том, как задать список вариантов в формах Google ListItem, в котором указывается не только значение выбора, но и пункт назначения goToPage() pageBreak в соответствии с выбранным значением.

Прошу прощения за длину вопроса: я предпочитаю дать некоторые предпосылки, чтобы прояснить проблему. Заранее большое спасибо!

Контекстом является теплица, в которой для каждого растения на разных этапах роста растения должны быть выполнены разные действия, такие как посев, пересадка, сбор урожая.

Название растения и стадия его роста хранятся в листе, называемом plantProgress, который имеет такую ​​форму:

|plantNumber    |   nextAction |
| ------------- -------------  |
|salad001       |   harvest    |            
|salad002       |   transplant |
|salad003       |   sow        |

plantNumber обновляется при создании нового (для этого у меня есть pageBreakItem), а значение nextAction обновляется на листе после завершения предыдущего действия.

Когда пользователь открывает форму, ему предоставляется ListItem из plantNumber. Каждый из nextAction соответствует отдельной странице (т.е. pageBreakItem)

Обратите внимание, что я уже создал в графическом интерфейсе Google Forms как начальную страницу с ListItem, так и последующую pageBreakItems со значениями nextAction, поэтому я получаю доступ к ListItem по его идентификатору, например,

plantList = form.getItemById("999999999").asListItem()

Я знаю, как динамически создавать список значений выбора при добавлении нового завода: я создаю массив из столбца plantNumber (например, plantChoices) и передаю его в plantList:

plantList.setChoiceValues(plantChoices)

Что мне нужно сделать, так это передать пункт назначения pageBreakItem (например, урожай) для каждого выбора.

Я пытался понять, как это сделать, просматривая документацию для класса Choice, но я не мог понять это.
В идеале я хотел бы сделать что-то вроде:

plantList = form.getItemById("999999999").asListItem()

plantList.setChoices([
        item.createChoice('salad001', FormApp.PageNavigationType.goToPage("harvest"))
        item.createChoice('salad002', FormApp.PageNavigationType.goToPage("transplant"))
        item.createChoice('salad003', FormApp.PageNavigationType.goToPage("sow"))
      ])

1 Ответ

0 голосов
/ 01 ноября 2018

Мне удалось решить проблему! Мне просто нужно было получить идентификатор каждого определенного pageBreakItem (свиноматка, пересадка, урожай) и передать его в plantList.createChoice в качестве второго аргумента. Вот пример:

plantList = form.getItemById("999999999").asListItem()

 sowPage = form.getItemById("111111111").asPageBreakItem();
 transplantPage = form.getItemById("222222222").asPageBreakItem();
 harvestPage = form.getItemById("333333333").asPageBreakItem();


plantList.setChoices([
        plantList.createChoice('salad001', harvestPage),
        plantList.createChoice('salad002', transplantPage),
        plantList.createChoice('salad003', sowPage)
      ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...