見積ファイルアプリからYYMM4桁と枝番4桁を取得し、
合成したものを見積ファイルの見積番号へセットしたいのですがうまくいきません。
解決策をご教示いただけると幸いです。
下記は作成したコードです。
(function () {
“use strict”;
var events = [
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.create.change.自動採番’,
‘app.record.edit.change.自動採番’
];
kintone.events.on(events, function(event) {
var record = event.record;
var appId = 取得先のアプリID;
var recordId = record[‘見積番号’].value[0].name;
kintone.api(‘/k/v1/records’, ‘GET’, {
app: 取得元のアプリID,
query: ‘見積 = "’ + recordId + ‘"’,
fields: [‘見積番号’,‘見積番号2’],
},
function(resp) {
var num1 = resp[‘records’][0][‘見積番号’][‘value’];
var num2 = resp[‘records’][0][‘見積番号2’][‘value’];
var record = kintone.app.record.get();
record[‘record’][‘見積番号’][‘value’] = num1;
record[‘record’][‘見積番号2’][‘value’] = num2;
kintone.app.record.set(record);
});
return event;
});
})();
consoleエラー内容は以下のように出ます。
Uncaught TypeError: Cannot read property ‘value’ of undefined
どうやらvar num1 = resp[‘records’][0][‘見積番号’][‘value’];がエラー対象のようです。
mojito さん
recordId の値が不正で、レコード取得出来ていないと思われます。
レコード数判定の処理も追加してはいかがでしょうか?
var recordId = record[‘見積番号’].value[0].name;
-> var recordId = record[‘見積番号’].value;
rex0220さん
ご教示ありがとうございます。
ご指摘の通りにコードを修正しましたが、今度はコンソールエラーで GET 520が表示されます。
解決策と原因をご教示いただけますでしょうか。
ブラウザの開発ツールで、デバッグしてみてください。
動かない?そんな時はデバッグをしてみよう!入門編
record, recordId などの内容を確認してみてください。
開発ツール のnetwork タブで、API の送受信の内容も確認できます。
できれば、原因を書いていただけると他の皆さんの参考になると思います。
コメント遅くなりすみません。
ボタン保存時に値をセットするにはkintone promiseを使わないと以前のコードでは値がセットできなかった為
下記のコードに書き換えたらところ実装できました。
(function() {
kintone.events.on(‘app.record.create.submit’, function(event){
var body = {
app: 取得元のアプリコード,
fields: [“ketanum”]
}
return new kintone.Promise(function(resolve, reject) {
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body,function (resp) {
var m = moment();
var yymm = m.format(“YY”) + m.format(“MM”);
var num2 = resp[‘records’][0][‘ketanum’].value;
num2 ++ ; //数値フィールドに対して有効なインクリメント
var numslice = ( ‘000’ + num2 ).slice( -4 );
var addnum = yymm + numslice;
event.record.自動採番.value = addnum ;
resolve(event);
});
※YYMMのデータセットにはmoment.jsを使いました。