簡単なカスタマイズで業務が少しスマートに!ステータス変更時のフィールド自動入力とコメント自動投稿

こんにちは、ジョイゾーでkintoneプラグインの開発エンジニアをやっている伊藤です。

業務を進める上で「進捗状況」を管理することは欠かせません。
特にチームでのプロジェクトやタスク管理において、ステータス管理はその進捗を可視化し、状況を把握しやすくするための重要な道具です。

そんなプロセス管理が絡んだ場面で、毎回の入力やコメント投稿をもっと手間なくスマートに行いたいですよね。
そこで今回は、ステータス変更に連動して必要な情報を自動入力し、完了報告のコメントも自動投稿するカスタマイズをご紹介します。

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

ステータス変更時にフィールド入力とコメント投稿をする

レコードのステータスが「完了」に変わったタイミングで、以下3つを自動で行うカスタマイズを実装します。
・承認日を自動入力
・承認者にログイン中のユーザーを入力
・コメント欄に「承認しました!確認よろしくお願いします。」というメッセージを自動で投稿

では、さっそくその実装方法を見ていきましょう!

実装紹介!

その前に、、、
承認日と承認者は自動で入力されるため、レコード登録者が編集できないように非活性にするカスタマイズを行なっていきましょう!

編集画面で「承認者」と「承認日」は活性状態で入力ができるようになっています。

kittone編集画面のカスタマイズ適用前

そこに以下のカスタマイズを反映させると、、、

(function () {
  "use strict";

  // フィールドを非活性にする関数
  function disableFields(event) {
    const completedDate = event.record['承認日'];
    const completedUser = event.record['承認者'];
    if (completedDate) completedDate.disabled = true;
    if (completedUser) completedUser.disabled = true;
    return event;
  }
  // 編集・新規作成画面でフィールドを非活性
  kintone.events.on('app.record.edit.show', disableFields);
  kintone.events.on('app.record.create.show', disableFields);

})();

「承認日」と「承認者」が非活性状態で編集ができなくなりました!
これで、ユーザが誤って編集を加えてしまう可能性も無くなりました。

それでは本題のステータス変更時にフィールド入力とコメント投稿をするカスタマイズを行なっていきます!

今回使用するのは、app.record.detail.process.proceed というイベントです。
このイベントは、レコードの詳細画面でステータスが遷移する直前に発火するイベントで、ユーザーが「ステータスを変更」ボタンを押したときに動作します。

kintoneにはカスタマイズに便利なkintone REST APIやkintone JavaScript APIなどが用意されているため、cybozu developer networkを参考にしてみてください。

その中で今回のカスタマイズでは、次に遷移するステータス名を取得し、「完了」であれば一連の処理を行う、という流れになっています。

コメント投稿には、kintoneのレコードコメントAPIを使って、現在のレコードに対して自動的にコメントを投稿しています。
今回はコメントには固定のメッセージを入れていますが、任意の文章にアレンジ可能です。

(function () {
  "use strict";

  kintone.events.on('app.record.detail.process.proceed', function (event) {
    const nextStatus = event.nextStatus.value;

    if (nextStatus === "完了") {
      // 変数でフィールドを取得
      const completedDate = event.record['承認日'];
      const completedUser = event.record['承認者'];

      // 今日の日付
      const today = new Date();
      const formattedDate = today.toISOString().split('T')[0];

      // ログインユーザー
      const loginUser = kintone.getLoginUser();

      // event.recordを書き換える
      completedDate.value = formattedDate;
      completedUser.value = [{ code: loginUser.code }];

      kintone.api(kintone.api.url('/k/v1/record/comment', true), 'POST', {
        app: kintone.app.getId(),
        record: kintone.app.record.getId(),
        comment: { text: "承認しました!\n確認よろしくお願いします。" }
      });
    }

    return event;
  });
})();

カスタマイズをする際のコードの適用方法については、kintone ヘルプで詳しく紹介されています。
JavaScriptやCSSの適用方法が分からない方は、以下リンクをチェックしてみてください。
JavaScriptやCSSでアプリをカスタマイズする

kintoneの画面を見てみましょう!

さて、実際にカスタマイズを反映させたkintoneの画面を見てみます。

ステータスが「処理中」になっている時、承認日、ユーザ選択、コメント欄には入力値がありません。

kittone詳細画面のカスタマイズ適用前

しかし、コードを反映させてステータスを完了にすると、、、

kittone編集画面のカスタマイズ適用後

さっきまで入力値の入っていなかった承認日、ユーザ選択に入力値が入り、コメント欄には「承認しました!確認よろしくお願いします。」と承認者からコメントが入っています。

まとめ

今回のように、「ステータスを完了にしたら、対応完了日と対応者を自動で入力し、コメントまで残す」といったカスタマイズは、簡単に便利に利用できる機能です。

私自身、普段はプラグイン開発を行っているためカスタマイズ開発は挑戦中の身ですが、思っていたより簡単にできることを感じました。

大胆なカスタマイズをしなくてもちょっとカスタマイズをするだけで格段に業務が楽になるかもしれません。
しかし、カスタマイズをおすすめしているというわけではなく、安全に業務が回るようプラグインやカスタマイズを取捨選択して、安心して使えるkintoneを作っていきましょう!

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

同じカテゴリーの記事