cybozu developer network

カテゴリー内の他の記事

8/14のメンテナンスで実装された新機能を試す

(著者:kintone エバンジェリスト 村濱 一樹

8/14のkintoneの定期メンテナンスで、下記リンクの通り機能追加がありました。

2016/08/14 の定期メンテナンスにおけるkintone API、User API更新情報

  • kintone JavaScript API
    • レコード追加/編集画面の保存成功後イベント
      レコードの追加/編集、レコード一覧画面のインライン編集の保存が成功した時に、実行されるプログラムを記述できます。
      ※PCビューのみの対応です。
  • 印刷画面の表示イベント
    • レコード表示画面で印刷ボタンを押され、印刷画面が表示された時に、app.record.print.showイベントが実行できます。
      ※PCビューのみの対応です。
  • kintone REST API
    • スペース内のスレッドへのコメント投稿
      スペースIDとスレッドIDを指定してスレッドにコメントを追加できます。

上記、機能追加について、実際の使いどころを簡単に説明したいと思います。

レコード追加/編集画面の保存成功後イベント

すでに、レコード追加/編集画面の保存実行前のイベントはありますが、「保存した後のイベント」が今回実装されました。

レコード追加画面の保存成功後イベント

これで保存が成功したタイミングに応じたカスタマイズができます。例えば、保存したデータを用いて別のアプリに新しいレコードを作ったり、更新したり、ということができます。在庫管理のシーンだと、レコードが作成されたら、在庫を増減させる、といったことも可能かと思います。追加したレコードのレコード番号を取得することもできます。
レコード追加/編集画面の保存実行前のイベントと比較すると下記のような使い方ができます。

レコード保存実行のイベントを使ったカスタマイズ

  • レコードのデータの内容を確認し、問題があればエラーを出して保存させない
    不正なデータは保存させない、いわゆるバリデーションの処理が可能です。
  • 保存の直前でレコードデータを編集し保存する
    半角カナ→全角カナに直すなど、保存の直前にフォーマットの統一やデータの再計算をさせることができます。

レコード保存実行のイベントを使ったカスタマイズ

  • 保存したレコードのレコード番号を他のアプリに登録する
    レコード保存実行前のイベントでは、レコード追加の場合はレコード番号を取得できません(保存する前なので当然ですが)。今回の機能追加で、保存したレコード番号を他アプリに登録したり、スレッドに投稿したりすることができます。
  • 保存が成功したときに他アプリを操作する
    レコード保存実行後のイベントは、保存が成功したことが保証されます。これを使えば、在庫引当処理のカスタマイズなどをしやすくなります。

印刷画面の表示イベント

今まで、印刷の時はJavaScriptを動かすことができなかったので、見た目のカスタマイズはできませんでしたが、今回のアップデートで「印刷画面の表示イベント」が実装されますので、印刷画面のカスタマイズも可能となり、印刷機能も多少使い勝手がよくなります。

レコード印刷画面表示イベント

さらに、スペースフィールドと組み合わせればより柔軟に印刷内容を指定できそうです。
極端ですが、下記のようなコードをかけば、全てのフィールドを非表示にし、スペースフィールドで印刷したい内容を表示する、ということも可能です。

jQuery.noConflict();
(function($) {
    "use strict";
    kintone.events.on("app.record.print.show", function(event) {
        var record = event.record;
        kintone.app.record.setFieldShown('顧客番号', false);
        kintone.app.record.setFieldShown('会社名', false);
        kintone.app.record.setFieldShown('部署名', false);
        kintone.app.record.setFieldShown('先方担当者名', false);
        kintone.app.record.setFieldShown('TEL', false);
        kintone.app.record.setFieldShown('FAX', false);
        kintone.app.record.setFieldShown('メールアドレス', false);
        kintone.app.record.setFieldShown('見込み時期', false);
        kintone.app.record.setFieldShown('確度', false);
        kintone.app.record.setFieldShown('製品名', false);
        kintone.app.record.setFieldShown('単価', false);
        kintone.app.record.setFieldShown('ユーザー数', false);
        kintone.app.record.setFieldShown('小計', false);
        var printContent = 
            "会社名: "  + record.会社名.value + "<br>"
            + "部署名: " + record.部署名.value + "<br>"
            + "担当者名(TEL): " + record.先方担当者名.value + "(" + record.TEL.value + ")<br>";
        var printField = kintone.app.record.getSpaceElement('print_space');
        $(printField).append(printContent);
    });
})(jQuery);
  • JavaScriptカスタマイズ適用前


  • JavaScriptカスタマイズ適用後

スペース内のスレッドへのコメント投稿

最近、レコードコメントのAPIは実装されましたが、今回はついにスペース内にコメントが投稿できるようになりました。(削除や変更は不可)
これをつかえば、アプリから直接、スレッドにコメントが投稿することができるので、あるスレッドの関係者全員に知ってほしいことやディスカッションしたいレコードの投稿など、より情報共有が捗ります。

スペースのスレッド内コメントの投稿

冒頭で紹介した、「レコード保存成功後のイベント」と組み合わせて、保存と同時に、そのレコードのURLをスペースに投稿、というサンプルを書いてみました。

(function() {
    "use strict";
    // レコード保存時のイベント
    kintone.events.on("app.record.create.submit.success", function(event) {
        var record = event.record;
        // スレッドへの投稿内容。レコードへのURLも表示する。
        var post = "日報が提出されました。確認してFeedbackしてください。\n"
                 + location.origin + location.pathname + "#record=" + record.$id.value;
        // スレッドへ投稿
        kintone.api(kintone.api.url('/k/v1/space/thread/comment'), 'POST', {
            space: 1,  // 任意のスペースID
            thread: 1, // 任意のスレッドID
            comment: {
                text: post
            }
        });
    });
})();

上記のシンプルな例だと、通知機能でも賄えそうですが、応用することで色んなシーンで使えそうです。

その他

JavaScriptファイルの読み込みサイズも拡張されました。
複数のJavaScriptファイルを1つにバンドルしてアップロードすることも多少は可能になったと思います。

  • JavaScriptファイルの読み込みサイズの拡張
    修正前:512KB以下
    修正後:20MB以下

まとめ

レコード追加/編集画面の保存後の成功イベントと、印刷画面の表示イベントの実装でよりかゆいところに手がとどくようになってきました。前回のレコードコメントのAPI実装に続き、今回スレッドへのコメント投稿機能も実装され、コミュニケーションツールとしても出来ることが増えてきたかと思います。今後のアップデートも楽しみですね!

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

サインインしてコメントを残してください。