Я относительно новичок в Google Scripts for Sheets / Forms и отредактировал этот ответ, чтобы создать сценарий, который обновляет параметры в раскрывающемся вопросе при его запуске. Работает чудесно, но с одним небольшим глюком. Мой код, как показано ниже:
var idColumn = 1;
function getSheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ProjectList");
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var lr = rows.getLastRow();
var docId = sheet.getRange(2,idColumn,lr,1).getValues(); //gets the data from the last row in selected column
fillFormData(docId);
}
//fills form with document ID
function fillFormData(docId) {
var formId = 'form ID goes here'
var form = FormApp.openById(formId);
var items = form.getItems();
var item = items[1];
//loop variables
var thisValue = "";
var arrayOfItems = [];
var newItem = "";
for (var i=0;i<docId.length;i++) {
thisValue =docId[i][0];
Logger.log('thisValue: ' + thisValue);
newItem = item.createChoice(thisValue);
arrayOfItems.push(newItem);
};
item.setChoices(arrayOfItems)
}
Я надеялся, что при обновлении вопроса с помощью setChoices () ответы будут размещены в том же столбце в листе ответов. Вместо этого каждый триггер этого сценария создает другой лист в листе ответов с именем «Номер проекта», перезаписывая один из столбцов, которые были там ранее. Это ожидаемое поведение, или кто-нибудь знает, как мои ответы попадают в один столбец? Есть ли способ направить ответы на этот вопрос в определенный столбец в листе ответов?
Редактировать: Согласно приведенным ниже советам, я попытался настроить макрос для использования .asListItems () безуспешно. Интересное поведение здесь состоит в том, что новый, дублирующий столбец, кажется, перезаписывает один из моих других столбцов, а не создает новый.
Вот мой ProjectList, всего один столбец:
Project Number
Project A
Project B
Project C
Project D
Project E
Форма состоит из 35 вопросов различного типа, разделенных на 3 раздела.