カテゴリー内の他の記事

レコード追加イベント

フォローする

Index

イベント

イベント発生時に実行できる操作

その他

イベント


レコード追加画面が表示された時のイベント

  • PC用とスマートフォン用で利用できるイベントです。
  • スペースに貼りつけたアプリにはこのイベントは発生しません。

関数

環境 関数 イベントが発生するタイミング
PC用 app.record.create.show
  • レコード追加画面または再利用画面が表示された時
スマートフォン用 mobile.app.record.create.show
  • レコード追加画面または再利用画面が表示された時

eventオブジェクトのプロパティ

PC用、スマートフォン用で同一の内容となります。

プロパティ名 説明
appId 数値 アプリID
reuse 真偽値 再利用の場合は true。通常の追加画面は false。
record オブジェクト レコード登録画面表示時のデータ(フォームの初期値)を保持したレコードオブジェクト。

フィールドの値に応じた制御

レコード追加画面の保存実行前イベント

  • PC用とスマートフォン用で利用できるイベントです。
  • スペースに貼りつけたアプリには利用できません。
  • kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待つことができます。

関数

環境 関数 イベントが発生するタイミング
PC用 app.record.create.submit
  • レコード追加画面または再利用画面で保存ボタンをクリックした時

スマートフォン用

 

mobile.app.record.create.submit
  • レコード追加画面または再利用画面で保存ボタンをクリックした時

eventオブジェクトのプロパティ

PC用、スマートフォン用で同一の内容となります。

プロパティ名 説明
appId 数値 アプリID
record オブジェクト ユーザー入力のデータを保持したレコードオブジェクト

フィールドの値に応じた制御

非同期処理の実行を待ってフィールドの値に応じた制御を行う

kintone.Promiseオブジェクトをreturnすることにより、非同期処理の実行を待ってからフィールドの値に応じた制御を実行することができます。エラーが発生してThenableオブジェクトが棄却された場合イベント処理は中断されます。

kintone.Promiseコンストラクタを利用する場合

kintone.apiが返すkintone.Promiseオブジェクトを利用する場合

レコード追加画面の保存成功後イベント

レコード追加画面もしくは、再利用画面で保存ボタンをクリックし、サーバーの保存が成功した後に発生します。

  • PC用のみで利用できます。
  • スペースに貼りつけたアプリには利用できません。
  • kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待つことができます。
  • 保存が失敗した場合にはイベントが実行されません。

関数

app.record.create.submit.success

eventオブジェクトのプロパティ

プロパティ名 説明
appId 数値 アプリID
recordId 数値 レコードID
record オブジェクト ユーザー入力のデータを保持したレコードオブジェクト

urlプロパティの指定

eventオブジェクトにurlプロパティを指定してeventをreturnすると、イベント処理後にそのURLに遷移します。

url プロパティの指定なし、またはnullを指定した場合は、通常通りレコード詳細画面に遷移します。

例えば、次のように記載すると、保存成功後に画面が「http://cybozu.co.jp/」に遷移します。

フィールドの値に応じた制御

ありません。 

サンプル

レコード追加画面のフィールド値変更時イベント

  • PC用とスマートフォン用で利用できるイベントです。
  • スペースに貼りつけたアプリにはこのイベントは発生しません。
  • トリガーとなった値の変更はキャンセルされません。

関数

環境 関数 イベントが発生するタイミング
PC用 app.record.create.change.<フィールドコード>
  • レコード追加画面または再利用画面で指定フィールドの値が変更された時、フォームの値を書き換えた時

スマートフォン用

 

mobile.app.record.create.change.<フィールドコード>
  • レコード追加画面または再利用画面で指定フィールドの値が変更された時、フォームの値を書き換えた時

フィールドコードに指定可能なフィールド

<フィールドコード>に存在するフィールドコード、かつ次の種類のフィールドを指定した場合のみハンドラーが実行されます。 存在しないフィールドコード、または下記の種類以外のフィールドを指定した場合は何も発生しません。

  • ラジオボタン
  • ドロップダウン
  • チェックボックス
  • 複数選択
  • ユーザー選択
  • 組織選択
  • グループ選択
  • 日付
  • 時刻
  • 日時
  • 文字列(1行)
  • 数値
  • テーブル

※文字列(1行)と数値フィールドに関して、イベントが発生するタイミングは以下の通りです。ブラウザによって少し挙動が異なります。

  • コントロールからフォーカスが外れたタイミング
  • ルックアップで値がコピーされたタイミング
  • 文字列(1行)フィールドで「自動計算する」設定になっている場合は、自動計算が反映されたタイミング(レコード一覧画面の編集時は、自動計算処理自体が無効なため対象外)

※テーブルフィールドに関して、イベントが発生するタイミングは以下の通りです。

  • テーブルの行追加、行削除ボタンがクリックされたタイミング

eventオブジェクトのプロパティ

PC用、スマートフォン用で同一の内容となります。

プロパティ名 説明
appId 数値 アプリID
record オブジェクト イベント発生時点のユーザー入力のデータを保持したレコードオブジェクト
changes オブジェクト 変更されたオブジェクト
changes.field オブジェクト 変更されたフィールドのオブジェクト
changes.row オブジェクト 変更されたテーブル行のオブジェクト
  • テーブルに行を追加した場合:change.row は 追加した行オブジェクトを参照します。
  • テーブルの行を削除した場合:change.row は null になります。
  • テーブル外のフィールドを変更した場合:change.row は null になります。

フィールドの値に応じた制御

イベント発生時に実行できる操作


フィールドの値を書き換える

ハンドラーが record オブジェクトのフィールドの値を書き換えて event オブジェクトを return した場合、その値でフィールドの値を更新します。

  • PC用とスマートフォン用で利用できます。
  • スペースに貼りつけたアプリには利用できません。
  • ラジオボタンフィールドで空文字列を指定した場合、初期値の選択肢となります。
  • フィールドの編集を不可にしても、値を書き換えることができます。
  • 編集権限のないフィールドの値を書き換えた場合はフォームには反映されません。
  • 最後のハンドラーが return しない場合、フィールドの値を更新しません。
  • 複数のハンドラーが登録されている場合、最後のハンドラーが return した戻り値を基準に反映されます。

サンプル

レコード追加画面を開いた時に「文字列_0」 フィールド、テーブル「Table」の1行目の「文字列_1」フィールドに初期値をセットし、さらにテーブルの末尾に行を追加します。
※サブテーブルの行追加にはフィールドタイプの指定が必要です。PC用とスマートフォン用で利用できます。

書き換えできないフィールド

以下のフィールドは、保存実行前イベントのハンドラーでフィールドの値を書き換えて return しても、フォームには反映されません。

  • レコード番号
  • 作成者
  • 作成日時
  • 更新者
  • 更新日時
  • ステータス
  • 作業者
  • 計算
  • 自動計算にした文字列1行
  • 添付ファイル
  • ルックアップ
  • ルックアップコピー先フィールド

フィールドの編集可/不可を設定する

ハンドラーが record オブジェクトのフィールドの disabled に true/falseを代入して event オブジェクトを return した場合は、そのフィールドは編集不可/可になります。

  • PC用とスマートフォン用で利用できます。
  • スペースに貼りつけたアプリには利用できません。
  • 編集権限のないフィールドを編集可能(disabled を false)にしても反映されません。

サンプル

「ドロップダウン_0」フィールドの値が変更になった時に、「文字列_0」 フィールドを編集不可にします。

編集可/不可にできないフィールド

以下のフィールドの値を編集可/不可を設定して return しても、フォームには反映されません。

  • 計算
  • ルックアップコピー先フィールド(旧デザインのみ)

フィールドにエラーを表示する

ハンドラーが record オブジェクトのフィールドの error にエラーメッセージを代入して event オブジェクトを return した場合、 フォームの値の書き換えと編集可/不可の設定はキャンセルされ、フィールドにエラーメッセージが表示されます。

  • PC用とスマートフォン用で利用できます。
  • スペースに貼りつけたアプリには利用できません。
  • フィールドの error に null を代入し event オブジェクトを return した場合、そのフィールドに表示されていたエラーを消すことができます。

サンプル

「文字列_0」フィールドとテーブル「Table」の1行目の「文字列_1」フィールドにエラーを表示します。

以下のフィールドは、エラー値を設定してもエラーは発生しません。

  • レコード番号
  • 作成者
  • 作成日時
  • 更新者
  • 更新日時
  • ステータス
  • 作業者

レコードにエラーを表示する

ハンドラーが event オブジェクトの error にエラーメッセージを代入して event オブジェクトを return した場合、フィールドの値の書き換えと編集可/不可の設定はキャンセルされ、画面の上部にエラーメッセージが表示されます。

  • PC用とスマートフォン用で利用できます。
  • スペースに貼りつけたアプリには利用できません。

ルックアップの取得を自動で行う

ルックアップフィールドの lookupプロパティを trueにすると、レコードに値をセットする時にルックアップの取得を実行します。

  • PC用とスマートフォン用で利用できます。
  • スペースに貼りつけたアプリには利用できません。

サンプル

レコード追加画面を開いた時に「ルックアップ」フィールドに値を入れてデータを取得します。

フィールドの表示/非表示を切り替える

  • PC用とスマートフォン用で利用できます。

関数

環境 関数 説明
PC用 kintone.app.record.setFieldShown("フィールドコード","true/false")
  • フィールドの表示/非表示を切り替えます。関数の第一引数にフィールドコード,第二引数にtrue/falseを指定します。
    trueを指定すると表示、falseを指定すると非表示になります。

スマートフォン用

 

kintone.mobile.app.record.setFieldShown("フィールドコード","true/false")
  • フィールドの表示/非表示を切り替えます。関数の第一引数にフィールドコード,第二引数にtrue/falseを指定します。
    trueを指定すると表示、falseを指定すると非表示になります。

サンプル

レコード追加画面の表示時に、フィールドコード「文字列__1行」を非表示にする例:

以下のフィールドは非表示にできません。

  • ラベル
  • 罫線
  • スペース
  • サブテーブル内のフィールド

変更されたフィールドやテーブル内の行オブジェクトを取得する

変更のあったテーブル内の行オブジェクト、テーブル外のフィールドを取得できます。

  • PC用とスマートフォン用で利用できます
  • スペースに貼りつけたアプリには利用できません。
  • rowオブジェクトは、テーブル内のイベント時のみ取得できます。
  • テーブル内の行を削除した際には、rowオブジェクトは null になります。

その他


関連Tips

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
tk

「ルックアップの取得を自動で行う」について質問です。

例えば、ルックアップの参照先データが以下とします。
あいうえお
あいうえ

この場合、以下としても取得されません。
「あいうえ」で検索し、「あいうえお」「あいうえ」がヒットするためと思われます。
kintone.events.on('app.record.create.show', function(event) {
var record = event.record;
record['ルックアップ']['value'] = 'あいうえ'; // ルックアップフィールドの値
record['ルックアップ']['lookup'] = true;
return event;
});

「あいうえ」を指定すると「あいうえ」で取得される方法はあるでしょうか。
よろしくお願いします。

Avatar
うしロン

ルックアップの絞り込みは「次のキーワードを含む」検索が可能で、検索関係はこちらに準拠していると思います。
過去にコミュニティでの回答をこちらにお知らせします。

https://cybozudev.zendesk.com/hc/ja/community/posts/202216884

Avatar
tk

完全一致で検索したい場合、検索キーワードをダブルクォーテーション(")で囲みます。

とありますが、"あいうえ"と囲っても「あいうえお」「あいうえ」がヒットします。

仕様でしょうか?

Avatar
西尾英道

イベント発生時に実行できる操作

【書き換えできないフィールド】
・ルックアップ
・ルックアップコピー先フィールド

なぜルックアップが書き換えできない仕様になっているのですか?

正直ルックアップのよくわからない仕様によって、コード量が無駄に3倍以上必要になるケースがあります。

せめて、ユニークが確定しているレコード番号で更新できるようにする等、もう少し改善できないのでしょうか。

いいかげんルックアップの設計にうんざりしてきました・・・。

 

Avatar
cybozu Development team

西尾様

いつもお世話になっております。

ルックアップの仕様の件でご不便をおかけしております。

いただいたご意見は社内にフィードバックいたします。

また、すでにご存知かもしれませんが、6月のアップデートで、製品に関するフィードバックが可能になりました。

カスタマイズに関するご要望を送ることも可能ですので、ぜひご活用いただければと思います。

 フィードバック画面へのアクセス方法: kintone画面の右上の?マークをクリック > 「kintone の改善に協力」をクリック

今後ともよろしくお願いいたします。

ログインしてコメントを残してください。
Powered by Zendesk