日付フィールド(注文日、開始日、終了日)の値を判断し、
文字列フィールド(状態)の値を自動で入力するスクリプトを
作成したいのですが、うまく動作しません。アドバイスをお願いします。
項目 フィールド名
注文日 orderDate
開始日 startDate
終了日 endDate
状態 status
■条件
<状態(status)の値>
(1)注文日・開始日・終了日・状態 は空(null) → 未発注
(2)注文日に日付が入っている & 開始日・終了日・状態 は空(null) → 発注済
(3)注文日・開始日に日付が入力 & 終了日・状態 は空(null) → 対応中
(4)注文日・開始日・終了日に日付が入力 → 完了
■参考にしたURL
<https://developer.cybozu.io/hc/ja/community/posts/115009807906-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E5%80%A4%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%88%A5%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B>
■考えているスクリプト
//----------フィールドの値によって別フィールドを自動更新する(エラーで苦戦中)----------------------------
var events = [‘app.record.index.show’,
‘app.record.detail.show’,
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.index.edit.show’,
‘app.record.create.change.status’,
‘app.record.edit.change.status’,
‘app.record.index.edit.change.status’,
‘app.record.create.change.endDate’,
‘app.record.edit.change.endDate’,
‘app.record.index.edit.change.endDate’,
‘app.record.create.change.orderDate’,
‘app.record.edit.change.orderDate’,
‘app.record.index.edit.change.orderDate’];
kintone.events.on(events, function(event) {
var record = event.record;
record[‘status’][‘disabled’] = true;
if (record[‘endDate’].value != null) {
record[‘status’].value === ‘作業完了’;
} else if (record[‘orderDate’].value != null) {
record[‘status’].value === ‘発注済’;
} else {
record[‘status’].value === ‘未発注’;
}
return event;
});
以上、よろしくお願いいたします。
Sophia さん
コードを見ると、代入ではなく論理式になっているので値が更新されません。
ただし、論理式を記述してもエラーにはならないと思いますので、別のエラー原因があると思います。
ブラウザーの開発ツールで調査してみてください。
[動かない?そんな時はデバッグをしてみよう!入門編
](/hc/ja/articles/207613916)
項目の入力済み判定ですが、下記が参考になります。
(小技)undefined と 空文字のスマートな if 文判定
あと日付項目をクリアする場合、空文字"" でもクリアできてしまいます。
null, undefined, “” は、未入力として判定したほうがいいと思います。
(function() {
"use strict";
var events = ['app.record.index.show',
'app.record.detail.show',
'app.record.create.show',
'app.record.edit.show',
'app.record.index.edit.show',
'app.record.create.change.status',
'app.record.edit.change.status',
'app.record.index.edit.change.status',
'app.record.create.change.endDate',
'app.record.edit.change.endDate',
'app.record.index.edit.change.endDate',
'app.record.create.change.orderDate',
'app.record.edit.change.orderDate',
'app.record.index.edit.change.orderDate'];
kintone.events.on(events, function(event) {
var record = event.record;
record['status']['disabled'] = true;
if (record['endDate'].value) {
record['status'].value = '作業完了';
} else if (record['orderDate'].value) {
record['status'].value = '発注済';
} else {
record['status'].value = '未発注';
}
return event;
});
})();
rex0220様
アドバイスありがとうございます。
私の記載が正しくありませんでした。エラー=思った通りに動かない との意味で記載しておりました。
>代入ではなく論理式になっているので値が更新されません。
こちらの部分の理解が不足しておりますので、頂きました
サンプルとともに確認を行います。