简体   繁体   English

如何在 gmail 插件上获取 textinput 值

[英]How get textinput value on gmail addon

I create a Gmail add-on with a form.我创建了一个带有表单的 Gmail 插件。 In this form, I have input but in my script, I can not find how to retrieve the value of input in variables.在这种形式中,我有输入,但在我的脚本中,我找不到如何检索变量中输入的值。 The following code opens a sidebar in the Gmail inbox when you click on an e-mail and fill in the form's input with the mail's metadata and contact information.当您单击电子邮件并使用邮件的元数据和联系信息填写表单的输入时,以下代码会在 Gmail 收件箱中打开一个侧边栏。 If the contact does not exist, the user can create it by entering the name and first name of the sender (the e-mail address is retrieved from the e-mail).如果联系人不存在,用户可以通过输入发件人的姓名和名字来创建它(从电子邮件中检索电子邮件地址)。 But I do not know how to recover the information entered by the user.但是我不知道如何恢复用户输入的信息。

Here is my script:这是我的脚本:

 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) }

Thank you in advance.先感谢您。 Sorry for my bad english.对不起,我的英语不好。

I've not used Gmail Addons extensively but here's a portion of one that I use to save notes in a spreadsheet that is used by another WebApp as sort of a personal assistant.我没有广泛使用 Gmail 插件,但这里是我用来将笔记保存在电子表格中的一部分,另一个 WebApp 将其用作个人助理。 It allows the user to pick a note type, of which there are many, and enter comments and load it into a spreadsheet.它允许用户选择一种笔记类型,其中有很多,然后输入评论并将其加载到电子表格中。

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;
}

I realize this isn't the exact answer you were requesting but hopefully it will help you to gain some insight into your problem.我意识到这不是您要求的确切答案,但希望它可以帮助您深入了解您的问题。

change your contact function signature to将您的联系功能签名更改为

createContact(e) { 
.. 
}

the e parameter will be populated with all the goodies you need. e 参数将填充您需要的所有好东西。 Message Meta data, form inputs etc...消息元数据、表单输入等...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM