GMAILメールアドレス予測をする入力欄を作ってみたので
サーバ側はコード.gs(GAS)でやります
chrome、firefoxは動作しますがIEはダメでした
safariは未確認です
佐藤やら山田等の名前 gmail やらのアドレスの一部などを入力して見て下さい
※jquery.min.js,jquery-ui.min.js,jquery-ui.cssを使用します。
んー、、投稿直後ってjqueryなどの読み込み動かないっぽいです?
ロード時の処理を書いてしまったのが影響してました
とりあえず動くようになったと思います。
SAMPLE
サーバ側はコード.gs(GAS)でやります
chrome、firefoxは動作しますがIEはダメでした
safariは未確認です
佐藤やら山田等の名前 gmail やらのアドレスの一部などを入力して見て下さい
※jquery.min.js,jquery-ui.min.js,jquery-ui.cssを使用します。
んー、、投稿直後ってjqueryなどの読み込み動かないっぽいです?
ロード時の処理を書いてしまったのが影響してました
とりあえず動くようになったと思います。
SAMPLE
以下コードです
HTMLから
HTMLから
<div id="jquery-ui-autocomplete" class="ui-widget">
<label for="jquery-ui-autocomplete-label">To:</label>
<input id="mailto">
<span id="close1" class="close" title="Close" onclick="adclear(1)">×</span>
</input><br />
<label for="jquery-ui-autocomplete-label">Cc:</label>
<input id="mailcc">
<span id="close2" class="close" title="Close" onclick="adclear(2)">×</span>
</input><br />
</div>
span行は無くてもいいですが、×をつけたかったのでつけてます
CSSです。×ボタンが要らない場合は
21行目から不要です
21行目から不要です
.ui-autocomplete {
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
font-size: 15px;
}
#jquery-ui-autocomplete label {
float: left;
margin-right: 5px;
margin-top: 8px;
color: black;
font-size: 15px;
}
#mailto,#mailcc {
margin-left: 5px;
font-size: 15px;
width: 350px;
font-family: 'Noto Sans Japanese', sans-serif;
margin-top: 5px;
}
#mailto:hover + .close,#mailcc:hover + .close {
display: inline-block;
}
.close {
display: none;
background-color: #848484;
border-radius: 50%;
color: white;
cursor: pointer;
font-size: 12px;
height: 16px;
line-height: 16px;
text-align: center;
top: 0px;
position: relative;
right: 20px;
width: 16px;
}
.close:hover {
display: inline-block;
}
まずhead内のjavascriptで必要なものをロードします
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
メインのjavascriptです
<script type="text/javascript">
var ArrData = new Array;
//×押下時 内容クリア
function adclear(prm) {
switch (prm) {
case 1:
document.getElementById('mailto').value = "";
break;
case 2:
document.getElementById('mailcc').value = "";
break;
case 3:
break;
}
}
$(function () {
//アドレス取得
google.script.run.withSuccessHandler(onSuccess)
.withFailureHandler(onFailure) .getContact();
function onSuccess(result) {
for (var i = 0; i < result.length; i++) {
var num = ArrData.push(result[i]);
}
var word = [];
for (var i = 0; i < ArrData.length; i++) {
word.push(String(ArrData[i]));
}
var pin = word;
$("#mailto").autocomplete({
source: pin
});
$("#mailcc").autocomplete({
source: pin
});
}
},
function onFailure(e) {
alert("連絡先にアクセス失敗しました");
}
);
</script>
最後にサーバ側gsです。アドレス帳の取得が主な処理です。
function doGet(e) {
try{
return HtmlService.createHtmlOutputFromFile('index');
}catch(err){
}
}
function getContact() {
var wadress = new Array;
var con = ContactsApp.getContacts();
for(var i = 0;i < con.length;i++){
var name = con[i].getFullName();
var emails = con[i].getEmails();
for (var j in emails) {
var num = wadress.push(name + "(" + emails[j].getAddress() + ")");
}
}
return wadress;
}
×ボタンのクリア方法などはもうちょっと工夫するとswichとかいらないですが
面倒だったのでこのまま;
あとは要素の追加削除を加えれば
どんどんアドレスを追加していけるような入力欄も作れるかも?
面倒だったのでこのまま;
あとは要素の追加削除を加えれば
どんどんアドレスを追加していけるような入力欄も作れるかも?
0 件のコメント:
新しいコメントは書き込めません。