Index
イベント
eventオブジェクトで実行できる操作
- フィールドの値を書き換える
- フィールドの編集可/不可を設定する
- フィールドにエラーを表示する
- レコードにエラーを表示する
- ルックアップを自動取得する
- ルックアップのコピー先のフィールドの値を自動でクリアする
- 変更されたフィールド、テーブル内の行オブジェクトを取得する
その他
イベント
レコード編集画面の表示後イベント
レコード編集画面が表示された後に発生するイベントです。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
- kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。
- 「関連レコード一覧」フィールドが配置されているアプリでは、「関連レコード一覧」フィールド以外のフィールドが表示された後にイベントが発生します。
- 「関連レコード一覧」フィールドは、当イベント発生後に逐次表示されます。
イベントタイプ
環境 | イベントタイプ | イベントが発生するタイミング |
---|---|---|
PC | app.record.edit.show |
|
モバイル | mobile.app.record.edit.show |
|
eventオブジェクトのプロパティ
PC、モバイルで同一の内容となります。
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
record | オブジェクト |
レコード編集画面が表示された時のデータを保持したレコードオブジェクト※ ※レコードオブジェクトとは、フィールドコードとフィールドの値などのレコードの情報を含むオブジェクトです。 |
recordId | 数値 | レコードID |
type | 文字列 | イベントタイプ |
eventオブジェクトで実行できる操作
- フィールドの値を書き換える をご参照ください。
- フィールドの編集可/不可を設定する をご参照ください。
- フィールドにエラーを表示する をご参照ください。
- レコードにエラーを表示する をご参照ください。
- ルックアップを自動取得する をご参照ください。
- ルックアップのコピー先のフィールドの値を自動でクリアする をご参照ください。
非同期処理の完了を待って次の処理を行う
kintone.Promiseオブジェクトをreturnすることにより、非同期処理の完了を待ってからeventオブジェクトで実行できる操作を実行することができます。
同じイベントに複数のイベントハンドラが登録されているとき、エラーなどが発生してThenableオブジェクトが棄却された場合には、後続のイベントハンドラの処理は実行されません。
記述方法はkintoneにおけるPromiseの書き方の基本を参考にしてください。
制限事項
以下のイベントでは、添付ファイルフィールドの情報が取得できません。
- mobile.app.record.edit.show
※app.record.edit.showでは取得可能です。
サンプル
レコード編集画面の表示時にメッセージを表示します。
レコード編集画面のフィールド値変更時イベント
- PCとモバイルで利用できるイベントです。
- スペースに貼りつけたアプリには利用できません。
イベントタイプ
環境 | イベントタイプ | イベントが発生するタイミング |
---|---|---|
PC | app.record.edit.change.<フィールドコード> |
|
モバイル
|
mobile.app.record.edit.change.<フィールドコード> |
|
フィールドコードに指定可能なフィールド
<フィールドコード>に存在するフィールドコード、かつ次の種類のフィールドを指定した場合のみハンドラーが実行されます。 存在しないフィールドコード、または下記の種類以外のフィールドを指定した場合は何も発生しません。
- ラジオボタン
- ドロップダウン
- チェックボックス
- 複数選択
- ユーザー選択
- 組織選択
- グループ選択
- 日付
- 時刻
- 日時
- 文字列(1行)
- 数値
- テーブル
※文字列(1行)と数値フィールドに関して、イベントが発生するタイミングは以下の通りです。ブラウザによって少し挙動が異なります。
- コントロールからフォーカスが外れたタイミング
- ルックアップで値がコピーされたタイミング
- 文字列(1行)フィールドで「自動計算する」設定になっている場合は、自動計算が反映されたタイミング(レコード一覧画面の編集時は、自動計算処理自体が無効なため対象外)
※テーブルフィールドに関して、イベントが発生するタイミングは以下の通りです。
- テーブルの行追加、行削除ボタンがクリックされたタイミング
eventオブジェクトのプロパティ
PC、モバイルで同一の内容となります。
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
record | オブジェクト |
イベント発生時点のユーザー入力のデータを保持したレコードオブジェクト※ ※レコードオブジェクトとは、フィールドコードとフィールドの値などのレコードの情報を含むオブジェクトです。 |
recordId | 数値 | レコードID |
changes | オブジェクト | 変更されたオブジェクト |
changes.field | オブジェクト | 変更されたフィールドのオブジェクト |
changes.row | オブジェクト | 変更されたテーブル行のオブジェクト
|
type | 文字列 | イベントタイプ |
eventオブジェクトで実行できる操作
- フィールドの値を書き換える をご参照ください。
- フィールドの編集可/不可を設定する をご参照ください。
- フィールドにエラーを表示する をご参照ください。
- レコードにエラーを表示する をご参照ください。
- ルックアップを自動取得する をご参照ください。
- ルックアップのコピー先のフィールドの値を自動でクリアする をご参照ください。
- 変更されたフィールドやテーブル内の行オブジェクトを取得するをご参照ください。
注意事項
イベント処理の記述方法の注意事項をご確認下さい。
制限事項
以下のイベントでは、添付ファイルフィールドの情報が取得できません。
- app.record.edit.change.<フィールドコード>
- mobile.app.record.edit.change.<フィールドコード>
レコード編集画面の保存実行前イベント
- PCとモバイルで利用できるイベントです。
- スペースに貼りつけたアプリには利用できません。
- falseをreturnすると保存処理をキャンセルできます。
- フィールドにエラーを表示するやレコードにエラーを表示するのようにerrorプロパティに値を設定したeventオブジェクトをreturnすると保存処理をキャンセルできます。
- kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。
イベントタイプ
環境 | イベントタイプ | イベントが発生するタイミング |
---|---|---|
PC | app.record.edit.submit |
|
モバイル
|
mobile.app.record.edit.submit |
|
eventオブジェクトのプロパティ
PC、モバイルで同一の内容となります。
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
recordId | 数値 | レコードID |
record | オブジェクト |
ユーザー入力のデータを保持したレコードオブジェクト※ ※レコードオブジェクトとは、フィールドコードとフィールドの値などのレコードの情報を含むオブジェクトです。 |
type | 文字列 | イベントタイプ |
eventオブジェクトで実行できる操作
- フィールドの値を書き換える をご参照ください。
- フィールドにエラーを表示する をご参照ください。
- レコードにエラーを表示する をご参照ください。
非同期処理の完了を待って次の処理を行う
kintone.Promiseオブジェクトをreturnすることにより、非同期処理の完了を待ってからeventオブジェクトで実行できる操作を実行することができます。
同じイベントに複数のイベントハンドラが登録されているとき、エラーなどが発生してThenableオブジェクトが棄却された場合には、後続のイベントハンドラの処理は実行されません。
記述方法はkintoneにおけるPromiseの書き方の基本を参考にしてください。
注意事項
イベント処理の記述方法の注意事項をご確認下さい。
制限事項
以下のイベントでは、添付ファイルフィールドの情報が取得できません。
- app.record.edit.submit
- mobile.app.record.edit.submit
レコード編集画面の保存成功後イベント
- PCとモバイルで利用できるイベントです。
- スペースに貼りつけたアプリには利用できません。
- kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。
- 保存が失敗した場合にはイベントが実行されません。
イベントタイプ
環境 | イベントタイプ | イベントが発生するタイミング |
---|---|---|
PC | app.record.edit.submit.success |
|
モバイル
|
mobile.app.record.edit.submit.success |
|
eventオブジェクトのプロパティ
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
recordId | 文字列 | レコードID |
record | オブジェクト |
ユーザー入力のデータを保持したレコードオブジェクト※ ※レコードオブジェクトとは、フィールドコードとフィールドの値などのレコードの情報を含むオブジェクトです。 |
type | 文字列 | イベントタイプ |
urlプロパティの指定
eventオブジェクトにurlプロパティを指定してeventをreturnすると、イベント処理後にそのURLに遷移します。
url プロパティの指定なし、またはnullを指定した場合は、通常通りレコード詳細画面に遷移します。
例えば、次のように記載すると、保存成功後に画面が「http://cybozu.co.jp/」に遷移します。
eventオブジェクトで実行できる操作
ありません。
サンプル
eventオブジェクトで実行できる操作
フィールドの値を書き換える
ハンドラーが 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 しても、フォームには反映されません。
- レコード番号
- 作成者
- 作成日時
- 更新者
- 更新日時
- ステータス
- 作業者
- 自動計算にした文字列1行
- 計算
フィールドにエラーを表示する
ハンドラーが record オブジェクトのフィールドの error にエラーメッセージを代入して event オブジェクトを return した場合、 フォームの値の書き換えと編集可/不可の設定はキャンセルされ、フィールドにエラーメッセージが表示されます。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
- フィールドの error に null を代入し event オブジェクトを return した場合、そのフィールドに表示されていたエラーを消すことができます。
サンプル
「文字列_0」フィールドとテーブル「Table」の1行目の「文字列_1」フィールドにエラーを表示します。
以下のフィールドは、エラー値を設定しても、フィールドにエラーは表示されません。
- レコード番号
- 作成者
- 作成日時
- 更新者
- 更新日時
- ステータス
- 作業者
- 計算
レコードにエラーを表示する
ハンドラーが event オブジェクトの error にエラーメッセージを代入して event オブジェクトを return した場合、フィールドの値の書き換えと編集可/不可の設定はキャンセルされ、画面の上部にエラーメッセージが表示されます。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
ルックアップを自動取得する
ルックアップフィールドの lookupプロパティに 'UPDATE' または trueを指定すると、ルックアップの取得を自動で行います。
- ルックアップの検索結果が1件の場合のみ、自動取得できます。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
サンプル
レコード編集画面を開いた時に「ルックアップ」フィールドに値を入れてデータを取得します。
ルックアップのコピー先のフィールドの値を自動でクリアする
ルックアップフィールドの lookupプロパティに 'CLEAR' を指定すると、コピー先のフィールドの値を空にします。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
サンプル
レコード編集画面を開いた時に「ルックアップ」フィールドのコピー先のフィールドの値をクリアします。
変更されたフィールドやテーブル内の行オブジェクトを取得する
変更のあったテーブル内の行オブジェクト、テーブル外のフィールドを取得できます。
- PCとモバイルで利用できます。
- スペースに貼りつけたアプリには利用できません。
- rowオブジェクトは、テーブル内のイベント時のみ取得できます。
- テーブル内の行を削除した際には、rowオブジェクトは null になります。
その他
関連Tips
レコード編集画面で保存ボタンをクリックした時の関数はapp.record.edit.submitとありますが、
キャンセルボタンをクリックしたときの関数は何になりますでしょうか?
app.record.edit.showイベントでメニュー上側の空白部分にユーザー向けの注意書きを表示して、保存またはキャンセル押下でその注意書きを非表示にしたいと思います。
保存ボタン押下時はapp.record.edit.submitで処理できましたが、キャンセルボタン押下時にボタンを非表示にする方法がわかりません。
よろしくお願いします。
EJM様
キャンセルボタンをクリックした時のイベントはありません。
お手数ですが、要件の実現方法について、cybozu developer コミュニティで相談いただければと存じます。
その際、どういう目的でキャンセル押下時に注意書きを非常時にしたいのかもあわせて記述いただけると回答者が回答しやすいかと思います。
よろしくお願いいたします。
cybozu Development team様
承知しました。必要が生じたら、コミュニティで相談してみます。
ただ、キャンセルボタン押下時のイベントもあると便利なので、今後のVer.UPの際に追加を検討いただけると、ありがたいです。
EJM様
ご確認ありがとうございます。
製品のご要望については、ヘルプの?マークから「kintoneの改善に協力」から送信ができます。
開発者が確認しておりますので、ぜひご活用ください。
cybozu Development team様
「レコード編集画面のフィールド値変更時イベント」の発火タイミングについて教えてください。
こちらのイベントですが、画面での値変更だけではなく、スクリプト内での値変更でも発火するのでしょうか。
また、このイベントで変更前の値を取得することは可能でしょうか。
ご教授ください。
mharum 様
お世話になっております。developer network事務局です。
changeイベントはJavaScriptカスタマイズによる値変更でも発火いたします。
しかし、変更前の値につきましては、現状取得することができません。
変更前の値を取得する場合は、
等のプログラムを記述する必要があるかと思われます。
よろしくお願いいたします。
cybozu Development team様
いつもお世話になっております。
ルックアップの取得を自動で行う機能を実装しようとしているのですが上手くいきません
別アプリからテーブル内の名前フィールドが同じであれば工事名,作業内容,内容というフィールドを日報アプリに自動取得したいのですが
日報アプリのルックアップに値を持ってくることはできたのですが保存を押すと「参照先からデータを取得してください」というエラーが表示されます
曖昧な説明で申し訳ありませんがご教授よろしくお願いします!
現状のコードも載せておきます
kintone.api(kintone.api.url('/k/v1/record', true), 'GET', body, function (resp) {
var table = resp.record.table1.value;
for(var i = 0; i< table.length; i++){
var worker=table[i].value["作業者1"].value;
if (name.includes(worker)) {
var cname=table[i].value["工事名"].value;
var mono=table[i].value["モノ"].value;
var Do=table[i].value["やること"].value;
var record = kintone.app.record.get();
console.log(record);
record.record.Table_1.value[0].value['工事名'].value = cname;
record.record.Table_1.value[0].value['工事名'].lookup = true;//工事名
record.record.Table_1.value[0].value.内容.value = mono;//内容
record.record.Table_1.value[0].value.作業内容.value = Do;
record.record.Table_1.value[0].value.作業内容.lookup = true;//やる事
kintone.app.record.set(record);
}
}
});//apiowari
return e;
});//eventsowari
})();
ヤマダ様
お世話になっております。cybozu developer network 運営でございます。
恐れ入りますが、こちらのコメント欄は記事内容のフィードバック目的となっているため、
記事から派生した技術的なご質問はcybozu developer コミュニティをご活用ください。
よろしくお願い致します。
お世話になっております。
レコードにエラーを表示する
を利用させて頂いております。
未来日付をチェックするなどの為、日付チェック項目を追加し、実際の日付項目の入力チェックを行っています。
エラー条件に対応して「保存」ボタンを押すとエラーメッセージは消えますが、
エラーに対応せず「キャンセル」ボタンを押すとエラーメッセージが表示されたままです。
尚、『レコード追加イベント』で「キャンセル」ボタンを押すと元々無いデータの制御なのか、エラーメッセージは消えます。
『レコード編集イベント』で「キャンセル」ボタンを押した時、エラーメッセージを消す方法をお教えください。
お手数をお掛けして申し訳ありませんが、よろしくお願いいたします。
鈴木 譲司 様
お世話になっております。cybozu developer network 運営でございます。
恐れ入りますが、現時点ではキャンセルに対応するイベントは用意しておりません。
現状は操作者ご自身でエラーのダイアログを消す想定となっております。
ご希望に添えず申し訳ありません。
このような要望があったことはチームに報告させていただき、
参考にさせていただきます。ご連絡ありがとうございました。
cybozu developer network 運営 ご担当者さま
ご回答の件、承知いたしました。
『レコードにエラーを表示する』の処理に対して、エラーを消す処理も対になっているモノと思い、こちらに記載させて頂きました。
「キャンセルに対応するイベントは用意しておりません。」を前提に『レコードにエラーを表示する』機能を採用するか仕様の調整を進める事ができます。
お忙しいところ、ありがとうございます。
今後とも、よろしくお願いいたします。