FMさま
大変お手数おかけします。ご認識いただいている通りです。
保存時にもJSを動かしたいため、kintone.eventsを2か所(create showとcreate submit)に入れています。
以下に、現状のコードを記載します。
// ルックアップで複数候補存在時の表示不能対策(複写)
function zeroformat(v, n) {
var vl = String(v).length;
if(n > vl) {
return (new Array((n - vl) + 1).join(0)) + v;
} else {
return v;
}
}
// 参照先(プロセス管理)の「受注番号」他を直接セット
(function () {
“use strict”;
// JavaScriptでsleepする方法
// ビジーwaitを使う方法
function sleep(waitMsec) {
var startMsec = new Date();
// 指定ミリ秒間、空ループ。CPUは常にビジー。
while (new Date() - startMsec < waitMsec);
}
kintone.events.on(‘app.record.create.show’, function(event) {
// フィールドコード"Table_10"のレコードオブジェクトを取得
var tableRecords = event.record.Table_10.value;
var record = event.record;
var j = 0;
// 作業日に本日日付をセット
var dt = new Date();
var today = dt.getFullYear() + “-” + zeroformat((dt.getMonth()+1),2) + “-” + zeroformat(dt.getDate(),2);
// テーブル内の"プレ番号"フィールドの値を取得
for (var i = 0; i < tableRecords.length; i++) {
var ItemName;
ItemName = tableRecords[i].value[‘プレ番号’].value;
//console.log((i+1) +'行目 = '+ ItemName);
sleep(200);
var params = {
‘app’: 2,
‘query’: ‘プレ番号1 = "’ + ItemName + ‘"’,
‘fields’: [“プレ番号1”, “伝票番号”, “案件名”, “契約日”],
‘totalCount’: true
}
// REST APIで参照先のレコードを1件取得
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params, function(resp) {
if (resp[‘records’].length === 1) {
var setRecord = kintone.app.record.get();
var rec = setRecord.record;
// 取得したレコードの値を「伝票番号」他にセット
console.log(‘●’+ (j+1) +'行目 = '+ resp[‘records’][0][‘伝票番号’][‘value’]);
// セットした値を表示
rec[‘Table_10’].value[j].value[‘伝票番号’].value = resp[‘records’][0][‘伝票番号’][‘value’];
rec[‘Table_10’].value[j].value[‘案件名’].value = resp[‘records’][0][‘案件名’][‘value’];
rec[‘Table_10’].value[j].value[‘契約日’].value = resp[‘records’][0][‘契約日’][‘value’];
console.log('作業日 = '+ record[‘作業日’][‘value’]);
console.log('契約日 = '+ resp[‘records’][0][‘契約日’][‘value’] );
// 受注後は「作業区分」を[受注済案件対応]に変更
if (resp[‘records’][0][‘伝票番号’][‘value’] != “”) {
if (resp[‘records’][0][‘契約日’][‘value’] <= record[‘作業日’][‘value’]) {
rec[‘Table_10’].value[j].value[‘作業区分’].value = ‘受注済案件対応’;
console.log('作業区分 = '+ rec[‘Table_10’].value[j].value[‘作業区分’].value);
}
else {
rec[‘Table_10’].value[j].value[‘作業区分’].value = ‘プレ案件対応(受注前)’;
}
j = j + 1;
kintone.app.record.set(setRecord);
}
else {
j = j + 1;
}
}
else {
console.log((j+1) +'行目 = ');
j = j + 1;
}
sleep (200);
});
}
record[‘作業日’][‘value’] = today;
return event;
});
kintone.events.on(‘app.record.create.submit’, function(event) {
// フィールドコード"Table_10"のレコードオブジェクトを取得
var tableRecords = event.record.Table_10.value;
var record = event.record;
var j = 0;
// 作業日に本日日付をセット
var dt = new Date();
var today = dt.getFullYear() + “-” + zeroformat((dt.getMonth()+1),2) + “-” + zeroformat(dt.getDate(),2);
// テーブル内の"プレ番号"フィールドの値を取得
for (var i = 0; i < tableRecords.length; i++) {
var ItemName;
ItemName = tableRecords[i].value[‘プレ番号’].value;
//console.log((i+1) +'行目 = '+ ItemName);
sleep(200);
var params = {
‘app’: 2,
‘query’: ‘プレ番号1 = "’ + ItemName + ‘"’,
‘fields’: [“プレ番号1”, “伝票番号”, “案件名”, “契約日”],
‘totalCount’: true
}
// REST APIで参照先のレコードを1件取得
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params, function(resp) {
if (resp[‘records’].length === 1) {
var setRecord = kintone.app.record.get();
var rec = setRecord.record;
// 取得したレコードの値を「伝票番号」他にセット
console.log(‘●’+ (j+1) +'行目 = '+ resp[‘records’][0][‘伝票番号’][‘value’]);
// セットした値を表示
rec[‘Table_10’].value[j].value[‘伝票番号’].value = resp[‘records’][0][‘伝票番号’][‘value’];
rec[‘Table_10’].value[j].value[‘案件名’].value = resp[‘records’][0][‘案件名’][‘value’];
rec[‘Table_10’].value[j].value[‘契約日’].value = resp[‘records’][0][‘契約日’][‘value’];
console.log('作業日 = '+ record[‘作業日’][‘value’]);
console.log('契約日 = '+ resp[‘records’][0][‘契約日’][‘value’] );
// 受注後は「作業区分」を[受注済案件対応]に変更
if (resp[‘records’][0][‘伝票番号’][‘value’] != “”) {
if (resp[‘records’][0][‘契約日’][‘value’] <= record[‘作業日’][‘value’]) {
rec[‘Table_10’].value[j].value[‘作業区分’].value = ‘受注済案件対応’;
console.log('作業区分 = '+ rec[‘Table_10’].value[j].value[‘作業区分’].value);
}
else {
rec[‘Table_10’].value[j].value[‘作業区分’].value = ‘プレ案件対応(受注前)’;
console.log('作業区分 = '+ rec[‘Table_10’].value[j].value[‘作業区分’].value);
}
j = j + 1;
//kintone.app.record.set(setRecord);
}
else {
j = j + 1;
}
}
else {
console.log((j+1) +'行目 = ');
j = j + 1;
}
sleep (200);
});
}
kintone.app.record.set(setRecord);
return event;
});
})();