はじめに
cli-kintone を使って kintone のデータを出力し、そのデータをアプリのバックアップや社内システムとの連携に利用しています。kintoneではワークフローを使っているアプリも多いですが、cli-kintoneではステータス情報の吐き出しができません。
そこで代替案として、最初は--conditionを使って、ステータスごとにcsvを出力し、結合していました。しかしこの方法では、ステータスが多くなると大変手間がかかります。そこで、JavaScriptでステータス値をフィールドにコピーする方法に切り替えました。
代替案:JavaScriptでステータスの値をフィールドにコピーし、フィールドの値を利用する
プロセス遷移時にJavaScriptでステータス値をフィールドにコピーする仕掛けを入れておきます。フィールドはcli-kintoneのエクスポート対象となりますので、レコードのエクスポートでステータスの状況を取得することができるようになります。
コピー先のフィールド配置
まず文字列一行のフィールドを作成し、フィールドコードを設定します。このフィールドはステータスを変更する作業者が編集可能な設定にしておきます。
コピーを行うJavaScript
フィールドコードをstatus_copyとした時のJavaScriptのコードは次の通りです。
(() => {
"use strict";
kintone.events.on("app.record.detail.process.proceed", (event) => {
// 変更後のステータス
const status = event.nextStatus.value;
// コピー先フィールドコード
const FIELD_CODE = "status_copy";
// 値をセット
event.record[FIELD_CODE].value = status;
return event;
});
})();
参考URL
キントマニア ステータス変更時のフィールド自動入力とコメント自動投稿
注意
- プロセスの遷移時にフィールドコピーを行うため、稼働後のアプリに設定しても、既存のレコードのステータス値をセットすることができません。別途この部分の対処方法を検討する必要があります。
- ユーザがスマホ版を利用している場合は、スマホ用のJavaScriptも登録する必要があります。4行目のイベント名をスマホ用に書き換えた内容になります。
おわりに
今回、これから稼動するアプリにこの方法を実装しました。既存のアプリもこちらの管理に切り替えようと思いましたが、フィールドの編集権限や既存レコードの問題が課題となり、切り替えできませんでした。引き続き良い方法がないか探したいと思います。
