Addon Dropdown
Я не создавал никаких аддонов некоторое время, но я знал, что хочу это когда-нибудь в будущем, поэтому я сделал пару примеров для себя.Это часть одного из них.
function buildMessageCard(dfltObj){
var card=CardService.newCardBuilder();
card.setHeader(CardService.newCardHeader().setTitle('DropDown Tester'));
var section=CardService.newCardSection().setHeader('Making Choices');
var makeAChoice=CardService.newSelectionInput().setType(CardService.SelectionInputType.DROPDOWN)
.setTitle('Make a Choice')
.setFieldName('userChoice')
.setOnChangeAction(CardService.newAction().setFunctionName('saveChoice'))
for(var i=1;i<dfltObj.selections;i++){
makeAChoice.addItem('Choice ' + i, i, (i==dfltObj.finalChoice)?true:false);
}
section.addWidget(makeAChoice);
var choiceText=CardService.newTextInput()
.setTitle('Final Choice')
.setFieldName('finalChoice')
.setValue(dfltObj.finalChoice);
section.addWidget(choiceText);
card.addSection(section);
return card.build();
}
function saveChoice(e){
var cObj={finalChoice:e.formInput.userChoice};
setDefaults(cObj);
return buildMessageCard(getDefaults());
}
var Default_URL='dflturl';
function setDefaults(dfltObj){
var ss=SpreadsheetApp.openByUrl(Default_URL);
var sh=ss.getSheetByName('Defaults');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
if(typeof(dfltObj[vA[i][0]])!='undefined'){
vA[i][1]=dfltObj[vA[i][0]];
}
}
rg.setValues(vA);
}
function getDefaults(){
var ss=SpreadsheetApp.openByUrl(Default_URL);
var sh=ss.getSheetByName('Defaults');
var rg=sh.getDataRange();
var vA=rg.getValues();
var dfltObj={};
for(var i=0;i<vA.length;i++){
dfltObj[vA[i][0]]=vA[i][1];
}
return dfltObj;
}
Таким образом, вы можете динамически изменять количество выборок с помощью небольшого кода и, немного подумав, вы, вероятно, сможете выяснить, как изменить параметры.
Вот хеш-таблица для моего dfltObj:
Надеюсь, это поможет.