Я не использовал аддоны Gmail широко, но вот часть, которую я использую для сохранения заметок в электронной таблице, которая используется другим WebApp как своего рода личный помощник.Он позволяет пользователю выбрать тип заметки, которых много, и ввести комментарии и загрузить их в электронную таблицу.
function buildAddOn(e) {
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var messageId = e.messageMetadata.messageId;
var cards = [];
cards.push(buildGetNotesTypesSelectionInput());
return cards;
}
function buildGetNotesTypesSelectionInput(){
var card=CardService.newCardBuilder();
card.setHeader(CardService.newCardHeader().setTitle('Don\'t Forget - Notes'));
var section=CardService.newCardSection().setHeader('Notes');
var typeSelect=CardService.newSelectionInput()
.setType(CardService.SelectionInputType.DROPDOWN)
.setTitle('Select Note Type')
.setFieldName('Note_Type');
typeSelect.addItem('', '', true);
var optsA=getNoteTypes();
Logger.log('\nselect1 optsA:\n');
for(var i=0;i<optsA.length;i++){
typeSelect.addItem(optsA[i], optsA[i],false);
Logger.log('\noptsA[%s]=%s',i,optsA[i]);
}
//typeSelect.setOnChangeAction(CardService.newAction().setFunctionName('select1Change'));
section.addWidget(typeSelect);
var commentText=CardService.newTextInput()
.setFieldName('Comments')
.setMultiline(true)
.setTitle('Comments');
section.addWidget(commentText);
var action=CardService.newAction().setFunctionName('saveNote');
var saveButton=CardService.newTextButton()
.setText('Save')
.setOnClickAction(action);
section.addWidget(saveButton);
card.addSection(section);
return card.build();
}
function saveNote(e){
var row=[];
var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd,yyyy HH:mm:ss");
row.push(ts,e.formInput.Note_Type,e.formInput.Comments,Session.getActiveUser().getEmail());
var ss=SpreadsheetApp.openById(gDefault.DontForgetId);
var sh=ss.getSheetByName('Notes');
sh.appendRow(row);
return CardService.newCardBuilder()
.setHeader(CardService.newCardHeader().setTitle('Note Saved'))
.addSection(CardService.newCardSection().addWidget(CardService.newTextParagraph().setText(Utilities.formatString('TimeStamp: %s\nNote Type: %s\nNote: %s\nEmail: %s\n', ts,e.formInput.Note_Type,e.formInput.Comments,Session.getActiveUser().getEmail()))))
.build();
}
function getNoteTypes(){
var ss=SpreadsheetApp.openById(gDefault.DontForgetId);
var sh=ss.getSheetByName('Options');
var rg=sh.getDataRange();
var vA=rg.getValues();
var oA=[];
for(var i=1;i<vA.length;i++){
oA.push(vA[i][0]);
}
return oA;
}
Я понимаю, что это не точный ответ, который вы запрашивали, но, надеюсь, этопоможет вам лучше понять вашу проблему.