Я довольно новичок в скрипте приложения Google и у меня возникла проблема с моим кодом.
Я использую следующий код для обновления сущностей компании до выпадающего списка формы Google. Раскрывающийся список используется в нескольких разделах формы (так как вы можете заполнить его для нескольких объектов).
Обновление работает нормально, но обновляет только первый раздел, в котором используется раскрывающийся список, в результате чего приходится удалять другие, дублируя обновленный раскрывающийся список.
Возможно ли автоматическое обновление всех разделов ??
Пожалуйста, помогите!
var ssID = "[SheetID]";
var formID = "[SheetID]";
var ssPlanningID = "[SheetID]";
var wsData = SpreadsheetApp.openById(ssPlanningID).getSheetByName("[SheetNAME]");
var form = FormApp.openById(formID);
function Dropdown() {
var title = "Entity name";
var values = wsData.getRange(4, 1, wsData.getLastRow()-1,1).getValues().map(function(o){ return o[0] }).filter(function(o){return o !== "" });
var items = form.getItems();
var titles = items.map(function(item){
return item.getTitle();
});
var values = values.sort();
var pos = titles.indexOf(title);
var item = items[pos];
var itemID = item.getId();
updateDropdown(itemID,values);
}
function updateDropdown(id,values) {
var item = form.getItemById(id);
item.asListItem().setChoiceValues(values);
}
//DROPDOWN VAN ENTITY NAME UPDATE
function DropdownEntityName() {
var title = "Entity name";
var values = wsData.getRange(3, 1, wsData.getLastRow()-1,1).getValues().map(function(o){ return o[0] }).filter(function(o){return o !== "" });
Logger.log(values);
var newdata = new Array();
for(nn in values){
var duplicate = false;
for(j in newdata){
if(values[nn] == newdata[j]){
duplicate = true;
}
}
if(!duplicate){
newdata.push([values[nn]]);
}
}
Logger.log(newdata);
var newdata = newdata.sort();
// newdata.sort(function(x,y){
// var xp = Number(x[0]);// ensure you get numbers
// var yp = Number(y[0]);
// return xp == yp ? 0 : xp < yp ? -1 : 1;// sort on numeric ascending
//});
Logger.log(newdata);
//sh.getRange(1,5,newdata.length,newdata[0].length).setValues(newdata);// paste new values sorted in column of your choice (here column 5, indexed from 1, we are on a sheet))
var items = form.getItems();
var titles = items.map(function(item){
return item.getTitle();
});
var pos = titles.indexOf(title);
var item = items[pos];
var itemID = item.getId();
updateDropdownEN(itemID,newdata);
}
function updateDropdownEN(id,values) {
var item = form.getItemById(id);
item.asListItem().setChoiceValues(values);
}