krewSheet
レコード一覧イベント

レコード保存時や編集時のkrewSheet上の処理をイベントで取得することが可能です。

krewSheetはkintoneと同等のイベントAPIを提供しており、ここではkrewSheetでサポートしているイベントAPIの詳細を説明します。

※krewSheetのイベント引数以外の値操作はkintoneの標準APIを利用してください。

イベント

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

  • krewSheetのイベントAPIはPC版のみ利用できます。
  • 各イベントのパラメータでのみkrewSheetの操作が可能になります。任意のタイミングでkrewSheetをAPIから操作することはできません。
レコード一覧の表示後イベント

krewSheetを使用したレコード一覧画面を表示するときに発生するイベントです。

kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。

イベントタイプ

app.record.index.show

発生するタイミング

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

プロパティ名 説明
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

発生するタイミング

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

プロパティ名 説明
appId 数値 アプリID
recordIds 配列 レコードIDの配列
records 配列 ユーザー入力のデータを保持したレコードオブジェクトの配列
type 文字列 イベントタイプ

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

保存成功後イベント

レコードの保存がサーバー側で成功した後に発生します。複数レコードを同時に保存した場合、1度だけ発生します。保存が失敗した場合にはイベントが実行されません。

eventオブジェクトのrecordsプロパティで変更したデータのみ複数レコード取得できます。

kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。

イベントタイプ

app.record.index.edit.submit.success

発生するタイミング

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

プロパティ名 説明
appId 数値 アプリID
recordIds 配列 レコードIDの配列
records 配列 ユーザー入力のデータを保持したレコードオブジェクトの配列
type 文字列 イベントタイプ

urlプロパティの指定

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

url プロパティの指定なし、またはnullを指定した場合は、通常通りレコード一覧のまま遷移しません。

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

サンプルプログラム
コードのコピー
// 保存成功後、「https://krew.mescius.jp/」のリンク先へ遷移する
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.mescius.jp/";
            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

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

プロパティ名 説明
appId 数値 アプリID
record オブジェクト 編集開始時のデータを保持したレコードオブジェクト
recordId 数値 レコードID
type 文字列 イベントタイプ

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

ありません。

フィールド値変更時イベント

フィールドの値が変更された時に発生します。トリガーとなった値の変更はキャンセルされません。

kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。

イベントタイプ

app.record.index.edit.change.<フィールドコード>

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

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

※文字列(1行)と数値フィールドに関して、イベントが発生するタイミングは以下のとおりです。

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

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

プロパティ名 説明
appId 数値 アプリID
record オブジェクト イベント発生時点のユーザー入力のデータを保持したレコードオブジェクト
recordId 数値 レコードID
changes オブジェクト 変更されたオブジェクト
changes.field オブジェクト 変更されたフィールドのオブジェクト
type 文字列 イベントタイプ

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

レコード削除前イベント

コマンドバーの「削除」ボタンをクリックしてポップアップの「OK」をクリックしたあと発生します。複数レコードを同時に削除した場合、1度だけ発生します。

false を return すると削除処理をキャンセルできます。eventオブジェクトのrecordsプロパティで変更したデータのみ複数レコード取得できます。

kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待ってイベントの処理を開始します。

イベントタイプ

app.record.index.delete.submit

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

プロパティ名 説明
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;
        });
    }
});
kintone標準のイベントAPIとの違い

krewSheetはkintone標準のイベントAPIと以下の違いがあります。

kintone krewSheet
以下のイベントのeventオブジェクトのrecord(s)プロパティ
  • krewSheetの保存実行前イベント(app.record.index.edit.submit)
  • krewSheetの保存成功後イベント(app.record.index.edit.submit.success)
  • krewSheetのレコード削除前イベント(app.record.index.delete.submit)
オブジェクト
※1レコードごと保存/削除します。
レコードオブジェクトの配列
※複数レコードの一括保存/削除が可能です。
エラーメッセージの表示 フィールドのエラーはフィールドにエラーメッセージが表示されます。レコードのエラーは画面の上部にエラーメッセージが表示されます。 フィールドのエラーもレコードのエラーも行ヘッダ(レコードの左端)とフッターにエラーが表示されます。
イベント発生時にフィールドの編集可/不可を設定 ハンドラーが record オブジェクトのフィールドの disabled に true/falseを代入して event オブジェクトを return した場合は、そのフィールドは編集不可/可になります。 krewSheetではイベント発生時にフィールドの編集可/不可を設定することができません。
フィールド値変更時イベントでリッチエディターフィールドの値の書き換え フィールド値変更時イベント(app.record.index.edit.change.<フィールドコード>)でリッチエディターフィールドの値を書き換えることができます(レコード保存後に一覧画面上に反映)。 フィールド値変更時イベント(app.record.index.edit.change.<フィールドコード>)でリッチエディターフィールドの値を書き換えることができません。保存実行前イベント(app.record.index.edit.submit)を使用してください。
関連するトピック

 

 


Copyright © 2024 MESCIUS inc. All rights reserved.