お世話になっております。
今回kintoneにて、下記動作を行いたいのですが、javascriptの知識不足で実装できなく困っております。
=========================================================
チェックボックスで[サンプルを希望する]にチェックが入ったら、[お申込み数]+1の値を[発送部数]フィールドに表示させたい
=========================================================
知識不足でお恥ずかしい限りですが、皆様方の知見をお借りしたいです。
何卒、宜しくお願い致します。
佐々木さん
はじめまして。ひよこです。
レコード追加画面や編集画面で「保存」ボタンを押したタイミングで、発送部数=お申し込み数+1 にするのイメージしたのですが、合っていますか?
(「保存」ボタンを押した後の画面で、発送部数=お申し込み数+1 になっている)
・レコード追加画面の実行前イベント:https://developer.cybozu.io/hc/ja/articles/201941984#step2
・レコード編集画面の保存実行前イベント:https://developer.cybozu.io/hc/ja/articles/202166270#step2
チェックボックスフィールドは配列になっているので注意が必要です。
フィールド形式:https://developer.cybozu.io/hc/ja/articles/202166330
こんな感じのプログラムでどうでしょうか?フィールドコードはフィールド名と一緒にしました。
(function() {
'use strict';
var events = ['app.record.create.submit', 'app.record.edit.submit'];
kintone.events.on(events, function(event) {
var record = event.record;
// チェックボックスの1番目の値を取得。チェックされていたら「サンプルを希望する」、チェックされていなかったら空文字列が入る。
var needSample = record['サンプル可否']['value'][0];
// 値は文字列型なので parseInt で int 型に変換。空だったら0をセット。
var num = parseInt(record['お申込み数']['value'],10) || 0;
// 値が入っていれば +1 する。そうでなければお申し込み数と同じにする。
if (needSample) {
record['発送部数']['value'] = num + 1;
} else {
record['発送部数']['value'] = num;
}
// return event で反映
return event;
});
})();
チュートリアル https://developer.cybozu.io/hc/ja/articles/360024370392 で JavaScript の基礎知識や kintone カスタマイズに必要な知識を体系的に勉強できます。
ちょっとだけ手を入れたい場合に、知識をつけておくと何かと便利かと思います。
ひよこ様
ご教授頂き、誠に有難うございます。
今回、「保存」ボタンを押したタイミングでなく、Formbrigeでフォームを作成しており、フォームからkintoneにデータが入った際に、
自動的にこの動作を行いたいのですが、そのような動作は可能でしょうか。
もしくは、データが入った際が不可能な場合、kintoneのレコード一覧画面が表示された際で実装出来たら幸いです。
説明が足りず申し訳ございません。
佐々木さん
ひよこです。
フォームブリッジは使ったことないのでわかりません。お力に添えず申し訳ないです…。
一覧画面表示イベントで、REST API で レコード情報を取得・そのレコード情報を使ってREST API で更新するといったことはできると思います。
レコードの一覧画面表示イベント:https://developer.cybozu.io/hc/ja/articles/201941964#step1
レコードの一括取得:https://developer.cybozu.io/hc/ja/articles/202331474#step2
レコードの一括更新:https://developer.cybozu.io/hc/ja/articles/201941784#step2
参考になりそうな記事:イベント内でREST API を使ってレコードを取得して更新している(一覧画面表示イベントではなくて、レコード保存後イベントですが)
https://developer.cybozu.io/hc/ja/articles/204537310
ただ、一覧画面を表示するたびに、レコードを取得・更新するのでパフォーマンスが落ちそうです…。
対象のレコードをたとえば「発送部数」が空のレレコードだけにするとすればちょっとマシにはなりそうです。
ひよこ様
返信が遅くなり大変申し訳ございません。
一覧画面での値の更新についてご教授頂き、有難うございます。
載せて頂いたイベントを参考に色々試してみたいと思います。
引き続き、何卒よろしくお願い致します。