Следующий скрипт создаст форму с 4 разделами. В первом разделе формы перечислены три параметра (раскрывающийся список), и в зависимости от того, какой вариант вы выберете, он перейдет в соответствующий раздел, чтобы запросить дополнительную информацию об этом конкретном параметре (дополнительные раскрывающиеся списки).
Я заполняю Первый раздел с именами трех листов (sql_db_info, oracle_db_info, imanis_db_info) Я заполняю три различных зависимых подраздела, используя строки в первых двух столбцах каждого листа.
Все это работает.
Проблема в том, что мне нужно сделать, чтобы обновить различные разделы, если я изменю какие-либо значения в столбцах существующих листов или добавлю новые листы.
Если я добавлю больше листов (mongo_db_info , casandra_db_info) и связанных с ними зависимых подразделов (используя значения в новых листах), он добавляет к существующей форме (добавление дополнительных разделов).
Я пытался удалять и воссоздавать разделы каждый раз, но это винты до сбора ответов в соответствующем листе. Новые столбцы создаются и распространяются из-под контроля.
Итак ... Мне нужно иметь возможность просто обновлять соответствующие разделы, добавляя новые записи и удаляя удаленные записи, или перезаписывая выпадающие записи без воссоздания разделы.
Итак, цикл должен работать в случае, если я добавляю новые листы (новый тип базы данных с новыми зависимыми разделами), но воссоздаю форму каждый раз, когда ее не урезаем.
Итак. Дополнительные листы, добавит к дополнительному первому разделу (sql, oracle, imanis, mon go, cassandra et c). И значения ячеек в первых двух столбцах этих листов обеспечат выпадающие списки для последующих двух разделов для каждого параметра, выбранного в первом разделе (sql, oracl, imanis et c).
Как я могу обновить соответствующие раскрывающиеся списки, когда добавляю новые листы или добавляю / удаляю значения из столбцов в листах?
В приведенном ниже коде функция dbMaker работает при первом запуске.
Что мне нужно сделать, чтобы он просто обновлял выпадающие списки при последующих запусках?
var ssID = "url id is put here";
var formID = "url id is put here"
var ss = SpreadsheetApp.openById(ssID);
var form = FormApp.openById((formID));
//function clearAll(form){
// var form = FormApp.openById((formID));
// var items=form.getItems();
// Logger.log(items);
// //if(items < 1 ) {
// var d=0;//deleted items counter
// for (var i=0; i<items.length; i++) {
// form.deleteItem(i-d++);
//
// }
//}
// dbMaker();
//}
function dbMaker() {
//var message = 'The current time is ' + new Date().toString();
//Logger.log(message);
var sheets = ss.getSheets().filter(function(sheet) {return sheet.getName().match(/db_info/gi);});
var dbSelect = form.addListItem().setTitle('DB Type').setRequired(true);
var dbChoices = [];
for(var i = 0; i < sheets.length; i++) {
var dbName = sheets[i].getName();
var dbSection = form.addPageBreakItem().setTitle(dbName).setGoToPage(FormApp.PageNavigationType.SUBMIT);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var nativetech = getnativetech(sheets[i]);
var nativetech_Select = form.addListItem().setTitle('Native Technology' + ' Choice').setHelpText('Select the correct DB type').setRequired(true);
var nativetech_Choices = [];
for(var j = 0; j < nativetech.length; j++) {
nativetech_Choices.push(nativetech_Select.createChoice(nativetech[j]));
Logger.log('nativetech choices', nativetech[j]);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var integratedtech = getintegratedtech(sheets[i]);
var integratedtech_Select = form.addListItem().setTitle('Intregrated with company' + ' Choice').setHelpText('Select the correct option').setRequired(true);
var integratedtech_Choices = [];
for(var k = 0; k < integratedtech.length; k++) {
integratedtech_Choices.push(integratedtech_Select.createChoice(integratedtech[k]));
Logger.log('integratedtech choices', integratedtech[k]);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
nativetech_Select.setChoices(nativetech_Choices).setRequired(true);
integratedtech_Select.setChoices(integratedtech_Choices).setRequired(true)
dbChoices.push(dbSelect.createChoice(dbName, dbSection));
}
dbSelect.setChoices(dbChoices).setRequired(true);
}
function getnativetech(sheet) {
var result1 = ""
var nativetech_Values = sheet.getDataRange().getValues();
var result1 = nativetech_Values.reduce(function(ar, e) {
if (e[0]) ar.push(e[0])
return ar;
}, []);
var nativetech = [];
for(var i = 1; i < result1.length; i++) {
Logger.log('result1',result1[i]);
nativetech.push(nativetech_Values[i][0]);
}
return nativetech;
}
function getintegratedtech(sheet) {
var result2 = ""
var integratedtech_Values = sheet.getDataRange().getValues();
var result2 = integratedtech_Values.reduce(function(ar, e) {
if (e[1]) ar.push(e[1])
return ar;
}, []);
var integratedtech = [];
for(var i = 1; i < result2.length; i++) {
Logger.log('result2',result2[i]);
integratedtech.push(integratedtech_Values[i][1]);
}
return integratedtech;
}