最近使い始めました、スクリプト関係はまだよくわからないことが多く勉強中です。
郵便番号からの住所変換を検索してajaxzip3関連のHPを見たのですが、これをkintoneで使用することはできるのでしょうか。
又 同様のことはどうすればいいのでしょうか。
よろしくお願いします。
Umemoto様
私は、例えば、下のようなスクリプトを作って対処しています。
郵便番号APIは、ajaxzip3ではありませんが。
Field Codeは、以下のようになっています。
ZIPCODE … 郵便番号「xxx-xxxx」
ADDRESS1 … 都道府県
ADDRESS2 … 市区町村以下の住所
TRIGGER … jQueryで ZIPCODE フィールドを取得するため、ZIPCODEフィールドの直後に置いた空白のSPACE
ややトリッキーなので、もっと優れた方法があるかもしれませんが、
ご参考になればと思います。
(function(kintone, $){
if (typeof $ === “undefined”) throw “このスクリプトは、jQuery を必要としています!”;
var zip2add = function(zipcode){
var d = new $.Deferred;
kintone.proxy(‘http://api.zipaddress.net/?zipcode=’ + zipcode, ‘GET’, {}, {}, function(body, status, headers) {
var json = body.replace(/^\s+|\s+$/g,‘’);
var result = JSON.parse(json);
if (result.code >= 200 && result.code < 300) {
var data = result.data;
var address = {“prefecture”:data.pref, “city”:data.address};
d.resolve(address);
} else {
d.reject(result.message);
}
});
return d.promise();
};
var addHyphen = function(zipcode){
var m = zipcode.match(/^(\d{3})(\d{4})/);
if (m)
return m[1] + “-” + m[2];
return zipcode;
};
var setAddressByZipcode = function(zipcode_trigger_space_id, field_code_zip, field_code_prefecture, field_code_address){
var space = $(kintone.app.record.getSpaceElement(zipcode_trigger_space_id));
var input_zip = space.closest(“.control-etc-gaia”).prev(“.control-gaia”).find(“input.input-text-cybozu”);
input_zip.on(“change”, function(){
var zipcode = input_zip.val();
var address = zip2add(zipcode)
.done(function(address){
console.log(“Address is obtained by zipcode "” + zipcode + "": ", address);
var record = kintone.app.record.get();
record[“record”][field_code_zip][“value”] = addHyphen(zipcode);
record[“record”][field_code_prefecture][“value”] = address.prefecture;
record[“record”][field_code_address][“value”] = address.city;
kintone.app.record.set(record);
})
.fail(function(e){
throw e;
});
});
};
kintone.events.on([“app.record.create.show”,“app.record.edit.show”], function(event){
setAddressByZipcode(“TRIGGER”, “ZIPCODE”, “ADDRESS1”, “ADDRESS2”);
});
})(kintone, jQuery);
Shinji Umemoto様
cstapの落合です。
以下、郵便番号からの住所変換のサンプルになります。
仕様
- 郵便番号-住所検索APIを利用して変換処理を行う
- 郵便番号フィールドの変更時イベントで非同期処理で変換する
- レコード新規登録&編集の保存実行時イベントで同期処理で変換する
- 非同期処理には、kintone.proxyを使う
- 同期処理には、jQuery ajaxを使う
JavaScript
/**
* 郵便番号:zipcode(文字列フィールド)
* 住所:address(文字列フィールド)
*
* 参考:http://zipaddress.net/
*/
(function() {
"use strict";
var events = [
'app.record.edit.submit',
'app.record.create.submit'
];
document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>');
// 郵便番号変更時のイベント
kintone.events.on('app.record.create.change.zipcode', function(event) {
var zipcode = event.record.zipcode.value;
// kintone.proxyで非同期処理
kintone.proxy(
'https://api.zipaddress.net/?zipcode=' + zipcode,
'GET',
{},
{},
function(body) {
var response = JSON.parse(body);
var record = kintone.app.record.get();
record.record.address.value = response.data.fullAddress;
kintone.app.record.set(record);
},
function(body) {
alert('郵便番号から住所の検索に失敗しました');
}
);
return event;
});
// submit実行時のイベント
kintone.events.on(['app.record.edit.submit', 'app.record.create.submit'], function(event) {
var record = event.record;
var zipcode = record.zipcode.value;
// jQuery ajaxで同期処理
$.ajax({
url: '//api.zipaddress.net/?zipcode=' + zipcode,
dataType: 'json',
async: false,
success: function(response) {
record.address.value = response.data.fullAddress;
},
error: function(response) {
alert('郵便番号から住所の検索に失敗しました');
}
});
return event;
});
})();
以上、参考になりますでしょうか?
ありがとうございます。
さっそくトライしてみます。