(著者:サイボウズ 佐藤 紅志)
年次ごとの自動採番については、以前の年次ごとの自動採番を行うワザで既に紹介されていますが、今回はこれを案件毎に採番する方法を解説させて頂きます。とは言っても、利用するアプリは2つです。
具体的には、アプリストアの「営業支援(SFA)パック」を利用して、案件情報を登録する時の「案件名」に、任意のフィールド情報と共に、ルックアップで取得された「顧客ごとの連番」を文字列連結した上で、デフォルト表示を行うというものです。
ご利用される場合は、このアプリパックをkintoneアプリストアから追加して下さい。
デモ環境
デモ環境で実際に動作を確認できます。
ログイン情報は cybozu developer network デモ環境 で確認してください。
フォームイメージ
採番フォーマット
[顧客名]-[連番5桁]-[案件種類]
フィールドの設定
顧客情報アプリ
追加するフィールド | フィールド名 | 初期値 | フィールドコード |
---|---|---|---|
数値 | 案件連番 | 0 | 案件連番 |

案件情報アプリ
また、後ほど顧客情報アプリの更新時に必要なレコード番号を取得するため、以下のフィールドを追加します。
追加するフィールド | フィールド名 | 初期値 | フィールドコード |
---|---|---|---|
数値 | 案件連番 | 0 | 案件連番 |
数値 | 顧客情報レコード番号 | - | 顧客情報レコード番号 |
次に[案件名]に付与する任意のフィールドとして、以下の追加を行います。現在のapiバージョンでは、ルックアップフィールドのイベント取得ができないため、ここで追加するフィールドのイベントで案件名の設定を行います。
追加するフィールド | フィールド名 | 項目と順番 | フィールドコード |
---|---|---|---|
ドロップダウン | 案件種類 | 新規,追加,変更 | 案件種類 |
案件連番の取得と編集を行うソースコード
まず、レコード追加・編集画面で"案件種類"を変更したタイミングで、「案件名」に採番をおこなうサンプルです。
JavaScriptファイルができたら、「案件情報」アプリに適用しましょう。
連番を更新するソースコード
次に、レコードを追加した際に連番を更新するサンプルです。
JavaScriptファイルができたら、先ほど同様「案件情報」アプリに適用していきます。
ソースコードの解説
連番を更新するソースコードにについても、同様で、ルックアップフィールド設定時に、顧客情報レコードIDを取得するようにしておりますので、レコードの特定には画面上の項目を利用しています。
アプリIDにつきましては、本記事執筆中にリリースされました2014/9/14リリースバージョンから、アプリ情報を取得するapiが追加されましたので、それを利用しました。名称や複数のコードを利用して、一括取得が可能なりましたが、ここでは設定したアプリコードから、アプリIDを取得しています
注意事項など
このTipsは、2014年9月版で確認したものになります。
なるほど、ちょっとした工夫ですね。
いろいろなシーンで応用できそう。
Uchinoさん、コメントありがとうございます。
カスタマイズは極力禁欲的にしつつ、どうしても必要なところについても、なるべく簡潔なコードで対応できることを理想にして行きたいと思っております。
こんにちは
↑のソースで、kintone.api.urlを使わなくて、直接 '/k/v1/record' を使っています。
下記、どの区別がありますか。
kintone.api('/k/v1/record', 'PUT',{}, function(resp){}, function(error){});
Emma様
ご質問いただきありがとうございます。cybozu developer network運営チームです。
kintone.api(kintone.api.url('/k/v1/record',true), 'PUT',{}, function(resp){}, function(error){});
urlの引数として”true”を渡す為に、kintone.api.url('/k/v1/record',true)のように書くわけです。
ゲストスペース内で実行するには、trueを指定します。
kintone.api('/k/v1/record', 'PUT',{}, function(resp){}, function(error){});はゲストスペースでは実行されません。
詳細はkintone REST API リクエストの「URL を取得する」のパラメータ「opt_detctGuestSpace」をご確認ください。
https://cybozudev.zendesk.com/hc/ja/articles/202166310#step3
cybozu Development team さん:
ありがとうございます!
お世話になります。
製品アプリと是正改善アプリを作成し、製品ごとに是正改善案件の自動採番を実施しようとしています。
下記のとおり、参考に作成したのですが、是正改善連番の値が更新されません。
製品名-00000-改善 といった形になります。 ゲストスペースにアプリはあります。
どこを修正すればよろしいでしょうか。よろしくお願いします。
(function() {
"use strict";
// 分類フィールドの更新イベントを登録します
var events = [
'app.record.create.change.分類',
'app.record.edit.change.分類'
];
kintone.events.on(events, function(event) {
var record = event.record;
var matterName =
record['製品名']['value'] +
"-" +
("00000" + record['是正改善連番']['value']).slice(-5) +
"-" +
record['分類']['value'];
record['案件名']['value'] = matterName;
return event;
});
})();
(function() {
"use strict";
// Register the events.
var events = [
'app.record.create.submit'
]
kintone.events.on(events, function(event) {
var app_code = "AppIdInitialFlow001"; // 初期流動アプリのアプリコード
kintone.api(kintone.api.url('/k/v1/apps', true), 'GET', {"codes": [ app_code ]
}, function (resp) {
var app_id = resp.apps[0].appId;
var record = event.record;
var rec_id = record['初期流動レコード番号']['value'];
var seq = parseInt(record['是正改善連番']['value'])+ 1;
// 連番更新リクエスト
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT',
{
"app": app_id, "id": rec_id, "revision": -1, "record":{
"是正改善連番" : { "value": seq }
}
}, function(resp) {
}, function(resp) {
var errmsg = 'An error occurred while updating records.';
if (resp.message !== undefined){
errmsg += '\n' + resp.message;
alert(errmsg);
}
}
);
}, function (resp) {
var errmsg = 'An error occurred while getting records.';
if (resp.message !== undefined) {
errmsg += '\n' + resp.message;
alert(errmsg);
}
});
});
})();
mika 様
お世話になっております。cybozu developer network 運営でございます。
恐れ入りますが、こちらのコメント欄は記事内容のフィードバック目的となっているため、
記事から派生した技術的なご質問はcybozu developer コミュニティをご活用ください。
よろしくお願い致します。
承知しました。