kintone

任務だ、勤怠管理を作れ。PART.2

Y氏
Y氏
おい、完了になっても編集できるんだけど?

ようやくプロセス管理が完成したと思った矢先…。
上司は細かいところに気づくものだ。
評論家と同じ。
じゃあお前が作れよ、なんて野暮なことは言わない。
僕はわかっている。評論家も必要だと。

さて、今回のゴールは「完了ステータスになっていたら編集不可にする」というシンプルなものだ。
このシンプルなゴールですら、プログラミング未経験者にはつらいものがある。

まず、kintoneのコード記述の方法に合わせて仕様を確認すると以下の通りだ。
①レコード保存のタイミングで。
②ステータスの値を取得し
③ステータスの値が「完了なら」
④保存時にエラーを表示する

①レコード保存のタイミングで

kintoneにはどのタイミングでコードを着火させるかを指定できる。(=イベント)
今回はレコード保存のタイミングなので、
app.record.edit.submit というイベントを使用する。

②ステータスの値を取得し

着火した(イベント発生時)タイミング時点のレコードの値をすべて取得するには、
var record = event.record; という魔法を使えばよい。
recordという箱にevent発生時のレコードをすべてぶち込みますよ、ということだ。

③ステータスの値が「完了なら」

先ほどぶち込んだrecordという箱からステータスの値を取り出すときは、
record.ステータス.valueという記述になる。
レコードって箱の中の~ステータスってところの~値!ってこと。
それが完了かどうかを調べればいいわけだから、ifを使えばよい。
if(record.ステータス.value === “完了”)ってことだ。

④保存時にエラーを表示する

kintoneにはjavascript固有のダイアログとは別に、エラー表示用の表現が用意されている。
これを用いると、event.error = “承認済みのデータは編集できません。”;こんな感じ。
これで赤くわかりやすくエラーを表示してくれる。

完成形

(function () {
 "use strict";
//イベント発生
   kintone.events.on('app.record.edit.submit',function(event) { //レコード保存時に
 
var record = event.record; //recordの箱にイベント発生時の値をぶち込む

if (record['ステータス']['value'] === "完了"){ //ステータスが完了だったら
  event.error = "承認済みのデータは編集できません。"; //エラーを表示する
  return event; //ターンエンド。
}
});
})():

なんて簡単で便利なんだ~。
これにて一件落着。次は中身を作らねば…。