Sheetモード > JavaScript API > レコード一覧イベント |
レコード保存時や編集時のkrewSheet上の処理をイベントで取得することが可能です。
krewSheetはkintoneと同等のイベントAPIを提供しており、ここではkrewSheetでサポートしているイベントAPIの詳細を説明します。
※krewSheetのイベント引数以外の値操作はkintoneの標準APIを利用してください。
![]() |
|
krewSheetを使用したレコード一覧画面を表示するときに発生するイベントです。
kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。
app.record.index.show
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
viewType | 文字列 | custom(krewSheetは「カスタマイズ」形式の一覧のみサポートします) |
viewId | 数値 | ビューID |
viewName | 文字列 | ビュー名 |
records | 配列 | レコードオブジェクトの配列 |
offset | 数値 | 一覧のオフセット数 |
size | 数値 | 一覧のレコード数 |
date | 文字列 | null |
type | 文字列 | イベントタイプ |
ありません。
レコードを保存する時に発生するイベントです。複数レコードを同時に保存した場合、1度だけ発生します。
eventオブジェクトのrecordsプロパティで変更したデータのみ複数レコード取得できます。
kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。
app.record.index.edit.submit
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
recordIds | 配列 | レコードIDの配列 |
records | 配列 | ユーザー入力のデータを保持したレコードオブジェクトの配列 |
type | 文字列 | イベントタイプ |
レコードの保存がサーバー側で成功した後に発生します。複数レコードを同時に保存した場合、1度だけ発生します。保存が失敗した場合にはイベントが実行されません。
eventオブジェクトのrecordsプロパティで変更したデータのみ複数レコード取得できます。
kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。
app.record.index.edit.submit.success
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
recordIds | 配列 | レコードIDの配列 |
records | 配列 | ユーザー入力のデータを保持したレコードオブジェクトの配列 |
type | 文字列 | イベントタイプ |
eventオブジェクトにurlプロパティを指定してeventをreturnすると、イベント処理後にそのURLに遷移します。
url プロパティの指定なし、またはnullを指定した場合は、通常通りレコード一覧のまま遷移しません。
例えば、次のように記載すると、保存成功後に画面が「https://krew.grapecity.com/」に遷移します。
サンプルプログラム |
コードのコピー |
---|---|
// 保存成功後、「https://krew.grapecity.com/」のリンク先へ遷移する kintone.events.on('app.record.index.show', function(e) { if (window.krewsheet){ krewsheet.events.on('app.record.index.edit.submit.success', function (event) { event.url = "https://krew.grapecity.com/"; console.log("url: " + event.url); return event; }); } }); |
ありません。
サンプルプログラム |
コードのコピー |
---|---|
// レコード保存後に更新日時を表示する kintone.events.on('app.record.index.show', function(e) { if (window.krewsheet){ krewsheet.events.on('app.record.index.edit.submit.success', function (event) { let records = event.records; for(let i=0; i<records.length;i++){ alert("更新日時は " + records[i]["更新日時"]["value"] + " です。"); } // console.log(event); return event; }); } }); |
krewSheetの編集が開始された時に発生します。
app.record.index.edit.show
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
record | オブジェクト | 編集開始時のデータを保持したレコードオブジェクト |
recordId | 数値 | レコードID |
type | 文字列 | イベントタイプ |
ありません。
フィールドの値が変更された時に発生します。トリガーとなった値の変更はキャンセルされません。
kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。
app.record.index.edit.change.<フィールドコード>
<フィールドコード>に存在するフィールドコード、かつ次の種類のフィールドを指定した場合のみハンドラーが実行されます。 存在しないフィールドコード、または下記の種類以外のフィールドを指定した場合は何も発生しません。
※文字列(1行)と数値フィールドに関して、イベントが発生するタイミングは以下のとおりです。
※テーブルフィールドに関して、イベントが発生するタイミングは以下のとおりです。
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
record | オブジェクト | イベント発生時点のユーザー入力のデータを保持したレコードオブジェクト |
recordId | 数値 | レコードID |
changes | オブジェクト | 変更されたオブジェクト |
changes.field | オブジェクト | 変更されたフィールドのオブジェクト |
type | 文字列 | イベントタイプ |
コマンドバーの「削除」ボタンをクリックしてポップアップの「OK」をクリックしたあと発生します。複数レコードを同時に削除した場合、1度だけ発生します。
false を return すると削除処理をキャンセルできます。eventオブジェクトのrecordsプロパティで変更したデータのみ複数レコード取得できます。
kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。
app.record.index.delete.submit
プロパティ名 | 型 | 説明 |
---|---|---|
appId | 数値 | アプリID |
recordIds | 配列 | レコードIDの配列 |
records | 配列 | 削除対象のレコードデータを保持したレコードオブジェクトの配列 |
type | 文字列 | イベントタイプ |
kintone.Promise を利用しない場合
サンプルプログラム |
コードのコピー |
---|---|
kintone.events.on("app.record.index.show", function(e) { if (window.krewsheet){ krewsheet.events.on('app.record.index.delete.submit', function (event) { let records = event.records; if (!records[0]['Address']['value']) { event.error = '住所がないため、削除できません。'; } return event; }); } }); |
サンプルプログラム |
コードのコピー |
---|---|
kintone.events.on("app.record.index.show", function(e) { if (window.krewsheet){ krewsheet.events.on('app.record.index.delete.submit', function (event) { let records = event.records; // 住所がない場合にfalseを返す if (!records[0]['Address']['value']) { return false; } return event; }); } }); |
kintone.Promise を利用する場合
サンプルプログラム |
コードのコピー |
---|---|
kintone.events.on('app.record.index.show', function(event) { if (window.krewsheet){ krewsheet.events.on('app.record.index.delete.submit', function (event) { let records = event.records; let companyName = records[0]['会社名'].value; // 企業マスタに会社名が存在することを確認 let masterAppId = 923; let query = '会社名_="' + companyName + '"'; return new kintone.Promise(function(resolve, reject) { let params = {app: masterAppId, query: query}; kintone.api('/k/v1/records', 'GET', params, function(resp) { resolve(resp); }); }).then(function(resp) { if (!resp.records.length) { event.error = '会社名がないため、削除できません。'; } return event; }); }); } }); |
ハンドラーが record オブジェクトのフィールドの値を書き換えて event オブジェクトを return した場合、その値でフィールドの値を更新します。
サンプルプログラム |
コードのコピー |
---|---|
// 「ドロップダウン_0」フィールドの値変更時に、「文字列__1行」 フィールド、テーブル「活動履歴」の1行目の「文字列__1行__2」フィールドに初期値をセット kintone.events.on("app.record.index.show", function(e) { if (window.krewsheet){ krewsheet.events.on('app.record.index.edit.change.ドロップダウン_0', function (event) { let record = event.record; record['文字列__1行_']['value'] = 'この文字列で上書き'; record['活動履歴']['value'][0]['value']['文字列__1行__2']['value'] = 'サブテーブルの1レコード目を上書き'; return event; }); } }); |
以下のフィールドは、保存実行前イベントのハンドラーでフィールドの値を書き換えて return しても、フォームには反映されません。
ハンドラーが event オブジェクトの error にエラーメッセージを代入して event オブジェクトを return した場合、フィールドの値の書き換えはキャンセルされ、行ヘッダにエラーが表示されます。
サンプルプログラム |
コードのコピー |
---|---|
kintone.events.on('app.record.index.show', function(event) { if (window.krewsheet){ krewsheet.events.on('app.record.index.edit.submit', function (event) { event.records[0]['error'] = 'このエラーメッセージを表示'; return event; }); } }); |
変更のあったフィールドを取得できます。
サンプルプログラム |
コードのコピー |
---|---|
kintone.events.on('app.record.index.show', function(event) { if (window.krewsheet){ krewsheet.events.on('app.record.index.edit.change.ドロップダウン_0', function(event) { let field = event.changes.field; console.log(field); return event; }); } }); |
krewSheetはkintone標準のイベントAPIと以下の違いがあります。
kintone | krewSheet | |
---|---|---|
以下のイベントのeventオブジェクトのrecord(s)プロパティ
|
オブジェクト ※1レコードごと保存/削除します。 |
レコードオブジェクトの配列 ※複数レコードの一括保存/削除が可能です。 |
エラーメッセージの表示 | フィールドのエラーはフィールドにエラーメッセージが表示されます。レコードのエラーは画面の上部にエラーメッセージが表示されます。 | フィールドのエラーもレコードのエラーも行ヘッダ(レコードの左端)とフッターにエラーが表示されます。 |
イベント発生時にフィールドの編集可/不可を設定 | ハンドラーが record オブジェクトのフィールドの disabled に true/falseを代入して event オブジェクトを return した場合は、そのフィールドは編集不可/可になります。 | krewSheetではイベント発生時にフィールドの編集可/不可を設定することができません。 |