[英]How get textinput value on gmail addon
我創建了一個帶有表單的 Gmail 插件。 在這種形式中,我有輸入,但在我的腳本中,我找不到如何檢索變量中輸入的值。 當您單擊電子郵件並使用郵件的元數據和聯系信息填寫表單的輸入時,以下代碼會在 Gmail 收件箱中打開一個側邊欄。 如果聯系人不存在,用戶可以通過輸入發件人的姓名和名字來創建它(從電子郵件中檢索電子郵件地址)。 但是我不知道如何恢復用戶輸入的信息。
這是我的腳本:
function buildAddOn(e) { // Activer les extensions complémentaires de Gmail var accessToken = e.messageMetadata.accessToken; GmailApp.setCurrentMessageAccessToken(accessToken); var messageId = e.messageMetadata.messageId; var message = GmailApp.getMessageById(messageId); var emailAddress = recupEmail(message.getFrom(), '<', '>'); // Dans le message, l'adresse mail de l'expéditeur se trouve entre les balises '<' et '>' var objet = message.getSubject(); var contact = ContactsApp.getContact(emailAddress); var contactNom; var contactPrenom; if(contact != null){ contactPrenom = contact.getFamilyName(); contactNom = contact.getFullName().replace(contactPrenom, ''); }else{ contactNom = ''; contactPrenom = ''; }// if-else var head = 'Expediteur'; var labelNom = 'Nom'; var labelPrenom = 'Prenom'; var labelEmail = 'Adresse e-mail'; var labelObjet = 'Objet'; var labelMessage = 'Message'; var action = CardService.newAction().setFunctionName('creatContact'); var section = CardService.newCardSection(); section.setHeader(head); section.addWidget(CardService.newTextInput().setFieldName('nom').setTitle(labelNom).setValue(contactPrenom)); section.addWidget(CardService.newTextInput().setFieldName('prenom').setTitle(labelPrenom).setValue(contactNom)); if(contact == null){ section.addWidget(CardService.newTextButton().setText('Ajouter au contacts').setOnClickAction(action)); } section.addWidget(CardService.newTextInput().setFieldName('mail').setTitle(labelEmail).setValue(emailAddress)); section.addWidget(CardService.newTextInput().setFieldName('objet').setTitle(labelObjet).setValue(objet)); var card = CardService.newCardBuilder() .addSection(section) .build(); return [card]; } function recupEmail(from, debut, fin){ var result = from.split(debut)[1].split(fin)[0]; return result; } function creatContact(){ /* var givenName = ??; var familyName = ??; var email = ??; */ ContactsApp.createContact(givenName, familyName, email) }
先感謝您。 對不起,我的英語不好。
我沒有廣泛使用 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;
}
我意識到這不是您要求的確切答案,但希望它可以幫助您深入了解您的問題。
將您的聯系功能簽名更改為
createContact(e) {
..
}
e 參數將填充您需要的所有好東西。 消息元數據、表單輸入等...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.