javascript - Getting contacts from ContactsApp Service for autocomplete using GAS -


how code getcontacts() using apps script if i'll have use jquery autocomplete "multiple", fetch emails(email not phone or other details).

enter image description here

it should return in such way if person has 2 email ids saved under single name, has added returning json array.

example if person.a has pera1@gmail.com , pera1@yahoo.com list has be

var emails = [       "person.a" <pera1@gmail.com>,       "person.a" <pera1@yahoo.com>, ...     ]; 

javascript

emails = google.script.run.getcontacts();  $( function() {     var availabletags = emails;     function split( val ) {       return val.split( /,\s*/ );     }     function extractlast( term ) {       return split( term ).pop();     }      $( "#recipients" )       // don't navigate away field on tab when selecting item       .on( "keydown", function( event ) {         if ( event.keycode === $.ui.keycode.tab &&             $( ).autocomplete( "instance" ).menu.active ) {           event.preventdefault();         }       })       .autocomplete({         minlength: 0,         source: function( request, response ) {           // delegate autocomplete, extract last term           response( $.ui.autocomplete.filter(             availabletags, extractlast( request.term ) ) );         },         focus: function() {           // prevent value inserted on focus           return false;         },         select: function( event, ui ) {           var terms = split( this.value );           // remove current input           terms.pop();           // add selected item           terms.push( ui.item.value );           // add placeholder comma-and-space @ end           terms.push( "" );           this.value = terms.join( ", " );           return false;         }       });   } ); 

assuming array of email addresses rfc compliant, can pick them apart. example:

addressbook = [   "'homer simpson' hsimpson@fox.net",   "'homer simpson' h.j.simpson@snpp.com",   "'marge simpson' msimpson@fox.net",   "'bart simpson' bsimpson@fox.net",   "'bart simpson' i.c.weiner@fox.net",   "'lisa simpson' hsimpson@fox.net",   "'maggie simpson' maggie.simpson@fox.net" ]; 

typing h should return 2 results:

'homer simpson' hsimpson@fox.net 'homer simpson' hsimpson@theplant.com 

the basics of like:

source: function(request, response) {   // delegate autocomplete, extract last term   response($.ui.autocomplete.filter(   addressbook, extractlast(request.term))); } 

i add little control , ensure format specific.

working example: https://jsfiddle.net/twisty/hvldp11j/3/

html

<div class="ui-widget">   <div class="ui-widget-header ui-corner-top center">     select recipients   </div>   <div class="ui-widget-content ui-corner-bottom">     <input type="text" id="emails" />   </div> </div> 

javascript

// base code: http://jqueryui.com/autocomplete/#multiple // data example mimic https://developers.google.com/apps-script/reference/contacts/contacts-app#getcontacts var addressbook = [   "'homer simpson' hsimpson@fox.net",   "'homer simpson' h.j.simpson@snpp.com",   "'marge simpson' msimpson@fox.net",   "'bart simpson' bsimpson@fox.net",   "'bart simpson' i.c.weiner@fox.net",   "'lisa simpson' hsimpson@fox.net",   "'maggie simpson' maggie.simpson@fox.net" ];  $(function() {   function split(val) {     return val.split(/,\s*/);   }    function extractlast(term) {     return split(term).pop();   }    function findname(contact) {     var name;     var regex = /.(.+). .*/g;     name = regex.exec(contact);     return name[1];   }    function findnameemail(contact) {     var tmp, name, email;     var regex = /.(.+). (.*)/g;     tmp = regex.exec(contact);     name = tmp[1];     email = tmp[2];     return name + " <" + email + ">";   }    $("#emails")     // don't navigate away field on tab when selecting item     .on("keydown", function(event) {       if (event.keycode === $.ui.keycode.tab &&         $(this).autocomplete("instance").menu.active) {         event.preventdefault();       }     })     .autocomplete({       minlength: 0,       source: function(request, response) {         var names = [];         $.each(addressbook, function(k, v) {           names.push(findnameemail(v));         });         // delegate autocomplete, extract last term         response($.ui.autocomplete.filter(           names, extractlast(request.term)));       },       focus: function() {         // prevent value inserted on focus         return false;       },       select: function(event, ui) {         var terms = split(this.value);         // remove current input         terms.pop();         // add selected item         terms.push(ui.item.value);         // add placeholder comma-and-space @ end         terms.push("");         this.value = terms.join(", ");         return false;       }     }); }); 

i started trying find name , using label. saw not discern right contact. switched grabbing name , email use.

if need, update post more complete example of data being returned google, , should easy update.


Comments

Popular posts from this blog

javascript - Clear button on addentry page doesn't work -

c# - Selenium Authentication Popup preventing driver close or quit -

tensorflow when input_data MNIST_data , zlib.error: Error -3 while decompressing: invalid block type -