我创建带有表单的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)
}
先谢谢您。 对不起,我的英语不好。
答案 0 :(得分:1)
我没有广泛使用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;
}
我知道这不是您要求的确切答案,但希望它将有助于您对问题有所了解。
答案 1 :(得分:0)
将您的联系功能签名更改为
createContact(e) {
..
}
e参数将填充您需要的所有好东西。消息元数据,表单输入等...