mls-hashimoto さま
お世話になります!
反映されるタイミングについて、お教えいただきたいのですが
現在、商品名フィールドに入力された、または書き換えた状況で
値が反映されるようになっておりまして、これはこれで完結できました。
もう一つ、データの書き込みをしたときの反映はkintoneではできないと思うのですが
一括で登録した後に反映されるようにするための方法として
編集ボタンを押したときなど反応させることは可能でしょうか?
このアプリで、商品名が入って、単価フィールドに値段が反映されるようにしている
jsは一括登録後に反映できるように下記のように組んであるのですが
先ほど、同じようにkintone.events.onの後に
入れてみたのですが反応がなく、どのようにすればよいのかご教授いただけますでしょうか?
恐れ入りますがよろしくお願いいたします。
商品名により単価が反映されるjs(イベントの発火の部分は太文字にしました)
(function() {
“use strict”;
var events = [
“app.record.create.show”, “app.record.edit.show”, “app.record.index.edit.show”,“app.record.index.edit.submit”,
“app.record.create.change.商品名”, “app.record.edit.change.商品名”, “app.record.index.edit.change.商品名”
];
kintone.events.on(events, function(event) {
var record = event.record;
record[‘UNROOF単価’][‘disabled’] = true;
if (record[‘商品名’].value === ‘スリムキーケース’)
record[‘UNROOF単価’].value = 4490;
else if (record[‘商品名’].value === ‘シンプルラウンド長財布(バイカラー)’)
record[‘UNROOF単価’].value = 8940;
else if (record[‘商品名’].value === ‘シンプルラウンド長財布’)
record[‘UNROOF単価’].value = 8940;
else if (record[‘商品名’].value === ‘スリム長財布(カード収納13段)’)
record[‘UNROOF単価’].value = 8940;
else if (record[‘商品名’].value === ‘シンプル名刺入れ’)
record[‘UNROOF単価’].value = 4990;
else if (record[‘商品名’].value === ‘ENISHI 2つ折り財布’)
record[‘UNROOF単価’].value = 13040;
else if (record[‘商品名’].value === ‘ENISHI ラウンド長財布’)
record[‘UNROOF単価’].value = 14540;
else if (record[‘商品名’].value === ‘ENISHI スマホケース(iPhoneSE第2世代/7/8)’)
record[‘UNROOF単価’].value = 5040;
else if (record[‘商品名’].value === ‘ENISHI スマホケース(iPhone11)’)
record[‘UNROOF単価’].value = 5040;
else if (record[‘商品名’].value === ‘ENISHI スマホケース(iPhone11Pro)’)
record[‘UNROOF単価’].value = 5040;
else if (record[‘商品名’].value === ‘ENISHI スマホケース(iPhone12/12Pro)’)
record[‘UNROOF単価’].value = 5040;
else if (record[‘商品名’].value === ‘ENISHI スリム長財布’)
record[‘UNROOF単価’].value = 14540;
else if (record[‘商品名’].value === ‘ENISHI 名刺入れ’)
record[‘UNROOF単価’].value = 5995;
else
record[‘UNROOF単価’].value = ‘’;
return event;
});
})();
テーブルで反映したいタイミングの例(反応がなかったパターンです)
下記でNGだったので、間違えているのかそもそもテーブルではこのタイミングは
出来ないのか、恐れ入りますがご教授いただけますでしょうか?
宜しくお願いいたします。
(function() {
‘use strict’;
let itemName = ‘商品名’; // 商品名のフィールドコード
let subTable = ‘工数情報’; // サブテーブルのフィールドコード
let workDescription = ‘作業内容’; // 作業内容のフィールドコード
let workload = ‘工数’; // 工数のフィールドコード
let fieldValues = {
‘シンプル名刺入れ’: [
{
value: ‘内装’,
workload: 5
},
{
value: ‘裁断’,
workload: 15
},
{
value: ‘仕上げ’,
workload: 5
}
],
‘スリム長財布(カード収納13段)’: [
{
value: ‘仕上げ’,
workload: 10
},
{
value: ‘内装’,
workload: 8
},
{
value: ‘裁断’,
workload: 5
}
],
‘スリムキーケース’: [
{
value: ‘仕上げ’,
workload: 10
}
],
};
kintone.events.on([
‘app.record.create.change.’ + itemName, ‘app.record.edit.change.’ + itemName,
‘app.record.create.show’+ itemName, ‘app.record.edit.show’+ itemName, ‘app.record.index.edit.show’+ itemName,
‘app.record.index.edit.submit’+ itemName, ‘app.record.index.edit.change.’+ itemName
], (event) => {
let record = event.record;
let tableColumns = [];
for (let fieldCode in record[subTable].value[0].value) {
tableColumns.push({
fieldCode: fieldCode,
fieldType: record[subTable].value[0].value[fieldCode].type
});
};
if (fieldValues[record[itemName].value]) {
let tableValue = [];
Object.keys(fieldValues[record[itemName].value]).forEach((field, index) => {
let addRow = {
value: {}
};
tableColumns.forEach((column) => {
addRow.value[column.fieldCode] = {
type: column.fieldType
};
switch(column.fieldCode) {
case workDescription:
addRow.value[workDescription].value = fieldValues[record[itemName].value][index].value;
break;
case workload:
addRow.value[workload].value = fieldValues[record[itemName].value][index].workload;
break;
default:
if (column.fieldType.match(/CHECK|SELECT|FILE/)) {
addRow.value[column.fieldCode].value = [];
} else {
addRow.value[column.fieldCode].value = ‘’;
}
};
});
tableValue.push(addRow);
});
record[subTable].value = tableValue;
}
return event;
});
})();