レコード番号を商品コードとして使用しているのですが、プリントクリエイターの仕様でレコード番号をバーコード化できません。
そのため、レコード追加時、レコード番号を数値フィールドにコピペして運用していきたいと考えています。
しかし、チュートリアルとレコード編集画面の保存成功後イベントとレコードの更新(PUT)を参考にプログラムを作ってみたのですが、うまく動きません。
多分もろもろ間違った書き方をしていると思うのですが、ご教示頂ければ助かります。。
(function() {
‘use strict’;
kintone.events.on([‘app.record.edit.submit.success’, ‘app.record.index.edit.submit.success’], function(event) {
// recordID取得
var record = event.record;
var recordCopy = {
“app”:1,
“id”:record.$id.value,
“record”:{
“レコード番号コピー”:{
“value”:record.$id.value
},
}
};
return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, recordCopy);
});
})();
レコード更新(PUT)の場合は
①1つのレコードを更新
②複数のレコードを一括更新
の2パターンあるのですが、指定するアドレスが違います。
今回は①のパターンですので、
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', recordCopy);
の部分を
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', recordCopy);
に直せば動きます。
しかし、今回されたいことは、REST APIを叩かずにできます。
レコード番号は新規レコード作成保存成功時(app.record.create.submit.success)に発番されるので
今回の要件にレコード作成時、というのが含まれているとREST APIで更新処理が必要になるのですが、
今回はレコード編集保存時と一覧レコード編集保存時のもともとレコード番号が発番された状態ですので
successを外してあげるだけで完結します。
以下サンプルです。
(function() {
'use strict';
kintone.events.on(['app.record.edit.submit', 'app.record.index.edit.submit'], function(event) {
// recordID取得
var record = event.record;
record.レコード番号コピー.value = record.$id.value;
return event;
});
})();
わかりやすいご説明ありがとうございます!
ご指摘の通り、「/k/v1/records」→「/k/v1/record」に直すと動きました。
しかし、実際は登録の際にレコード番号を取得したいと考えておりました。(バーコード化できない)
これまでの試行錯誤した結果、レコード番号が割り振られるタイミングは保存完了後ということが分かりました。
なのでここまで書いて気づいたのですが、イベントのトリガーを保存完了後にすればよかったんですね!
参考:レコード追加画面の保存成功後イベント
(function() {
‘use strict’;
kintone.events.on([‘app.record.create.submit.success’], function(event) {
// recordID取得
var record = event.record;
var recordCopy = {
“app”:1,
“id”:record.$id.value,
“record”:{
“レコード番号コピー”:{
“value”:record.$id.value
},
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, recordCopy);
});
})();