gpt4 book ai didi

javascript - 从 ContactsApp Service 获取联系人以使用 GAS 自动完成

转载 作者:行者123 更新时间:2023-12-03 04:41:32 31 4
gpt4 key购买 nike

如果我必须使用 JQuery 自动完成“多个”来获取电子邮件(仅电子邮件,而不是电话或其他详细信息),如何使用应用程序脚本编写 getContacts() 代码。

enter image description here

它应该以这样的方式返回:如果一个人在一个名字下保存了 2 个电子邮件 ID,则必须将其添加到返回的 JSON 数组中。

例如,如果 PERSON.A 拥有 pera1@gmail.com 和 pera1@yahoo.com,则列表必须为

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 from the field on tab when selecting an 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 ) {
// delegate back to autocomplete, but extract the 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 the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});
} );

最佳答案

假设您获得了一组符合 RFC 标准的电子邮件地址,您可以将它们分开。例如:

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"
];

输入 h 应返回 2 个结果:

'Homer Simpson' hsimpson@fox.net
'Homer Simpson' hsimpson@theplant.com

其基本原理如下:

source: function(request, response) {
// delegate back to autocomplete, but extract the last term
response($.ui.autocomplete.filter(
addressBook, extractLast(request.term)));
}

我喜欢添加一些控制并确保格式特定。

工作示例: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 to 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 from the field on tab when selecting an 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 back to autocomplete, but extract the 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 the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});

我首先尝试找到名称并将其用作标签。然后我发现你无法辨别正确的联系方式。所以我将其切换为获取要使用的名称和电子邮件。

如果您需要,请使用从 Google 返回的数据的更完整示例来更新您的帖子,并且更新应该很容易。

关于javascript - 从 ContactsApp Service 获取联系人以使用 GAS 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066544/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com