logo

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

無料ブログはココログ

« これでKintoneでの帳票開発も楽々しかも無料 Reports Connect for Kintoneその3 | トップページ | Reports Connect for Kintone テーブルのデータの読込 »

Reports Connect for Kintone アプリへの組込み方法

前回までの記事で、Reports Connect for Kintoneでの帳票開発方法に関して解説しました。

今回は、出来上がった帳票を、実際のアプリに組込むテクニックに関して解説します。

前回対象とした「はじめに」というアプリの一覧画面に印刷ボタンを追加して、表示している一覧の内容をReports Connectで印刷出来るようにします。

ボタンの追加は、以下のJavascriptをアプリにアップロードすることで実現できます。

------------------------------

/*
* はじめに一覧印刷
*/
(function() {

    //①ReportsConnectのライブラリーをロードする
    load("https://kps-reportsconnectk.herokuapp.com/js/kpsrck.js");
    //②ロード完了後kpsrc.setupReportを呼び出す
    //(引数はReportsConnectのアプリIDと帳票レコード名)
    waitLoaded(function(){
        kpsrc.setupReport(17, "はじめに一覧");
    });
    //③一覧表示時に、印刷ボタンが無ければ追加する
    kintone.events.on('app.record.index.show', function(event) {
        var btid = "printbt";
        if(document.getElementById(btid)==null){
            var sp = kintone.app.getHeaderMenuSpaceElement();
            var bt = document.createElement('input');
            bt.type = "button";
            bt.value = "印刷";
            bt.onclick = goPrint;
            bt.id = btid;
            sp.appendChild(bt);
        }
    });
    //④印刷ボタン押下時の処理。kpsrc.rcparms.kps_qlにクエリーを動的に設定し
    //kpsrc.gorcprint呼び出す
    function goPrint() {
        kpsrc.rcparms.kps_ql = kintone.app.getQueryCondition() + " order by 優先度";
        kpsrc.gorcprint();
    }
    //以下の関数はそのままコピペしてください。
    // http ヘッダに要素を追加します
    function load(src) {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = src;
        head.appendChild(script);
    }
    // ReportsConnect がロードされるまで待ちます
    var timeout = 10 * 1000; // ms
    var interval = 100; // ms
    function waitLoaded(callback,parm) {
        setTimeout(function() {
            timeout -= interval;
            if (typeof kpsrc !== 'undefined') {
                callback(parm);
            } else if (timeout > 0) {
                waitLoaded(callback,parm);
            } else {
                // abort
            }
        }, interval);
    }

})();

----------------------------

*コードの解説

順を追って上記コードの解説をします。

①ReportsConnectのライブラリーをロードする

load関数を呼び出します。

②ロード完了後kpsrc.setupReportを呼び出す

setupReportは印刷処理の初期設定を行う関数です。引数にReportsConnectのアプリIDと帳票レコード名を指定します。

この関数は①でロードするReportsConnectのライブラリーのロードが完了後実行する必要があります。waitLoaded関数の中に記述することで、ライブラリーのロード完了後実行されます。

③一覧表示時に、印刷ボタンが無ければ追加する

app.record.index.showイベントに処理を記述することで、一覧表示時に実行する処理を記述できます。

kintone.app.getHeaderMenuSpaceElement関数で、一覧の上の部分のスペースの要素を取得することができるので、ここにボタンを追加します。

ボタン押下時の処理は④で記述するgoPrint関数を指定します。

④印刷ボタン押下時の処理

kpsrc.rcparms.kps_qlにクエリーを設定すると、対応する帳票レコードのクエリーフィールドに指定したクエリーを上書きできます。

これにより、読み込むデータの条件を動的に変更できます。

今回は、kintone.app.getQueryCondition関数により、現在表示している一覧の条件に対応するクエリーを入手し、指定します。

さらに帳票のグルーピングで優先度を指定している都合上、" order by 優先度"を連結しておきます。

なお、kps_qlと同様に、以下のパラメーター名(kpsrc.rcparms.xxxxxのxxxxxの部分)に値を設定することで帳票レコードの設定を動的に上書きできます。

帳票レコードのフィールドパラメーター名意味備考
クエリー kps_ql データを読む際のクエリー
データのアプリID kps_dataappid 対象アプリID
対象レコード番号 kps_recid 読み込むレコードID クエリーと対象レコード番号はどちらか一方を指定する
テーブル kps_table 使用するテーブルのフィールドコード テーブルのデータを読む場合指定
ファイル名 kps_filename PDFファイルの名前 defaultはprint.pdf
添付先 kps_parentid PDFファイルをレコードに添付する場合の添付先 アプリID;レコードID;フィールドコードで指定、フィールドコードのみを指定した場合は現在のレコードに添付される
APIトークンによる認証を行う場合でレコードを添付するアプリが現在のアプリと異なる場合は、添付先フィールドの指定にさらに;添付するアプリのAPIトークンを連結してください。
イメージファイルフィールド名 kps_upattach 帳票で使用したいイメージがデータに添付されている場合のフィールドコード
nullを空文字へ置換 kps_null2blank 値がnullの場合、"null"という文字列の代わりに空文字を設定するかどうか
ログイン kps_login データをアクセスするユーザーのログイン名 APIトークンでの認証を行う場合はReportsconnectアプリのトークン,データのアプリのトークンの順にカンマ区切りで指定
パスワード kps_pwd データをアクセスするユーザーのパスワード APIトークンでの認証を行う場合はブランク
n/a kps_newwindow 印刷時に別Windowを開くかどうか PDF添付処理の際に使用する。boolean値で指定

なお、その下にあるload関数とwaitLoaded関数はライブラリーのロードと、ロード完了を待つ関数です。ここに記述されているものをそのまま使用してください。

*Javascriptのアップロードと実行

以上のJavascriptをアプリの管理->詳細設定->Javascriptによるカスタマイズ のリンクからアップロードしてやると、一覧画面に印刷ボタンが表示されます。

20131114_13h43_47

印刷ボタンを押すと表示中の条件で選択されたデータで前回作成した帳票が印刷できます。

20131114_13h52_31

ただし、一覧のセレクトリストで、My toDoを選択したケースではエラーが発生しました。

20131114_13h47_53

サイボウズに確認したところ、これは、kintone.app.getQueryConditionで入手したクエリーではステータスというフィールドに指定する条件が「完了」等の文字でなく、内部コードが指定されるという問題があるためだそうです。

今後修正するかどうかは、今後のバージョンアップ時、検討するそうです。

今のところ、条件にステータスを使用する場合は自力で内部コードを対応する文字列に変換する等の工夫が必要なようです。

*パラメータを帳票へ表示

なお、Javascriptでkpsrc.rcparms.xxxxxに指定した値は、iReport側にパラメータとして渡されますので、これを使用する事ができます。xxxxxの部分がパラメーター名になります。

試しに、今回発行したクエリーを帳票のタイトル部分に出力してみます。

iReportで、前回作成した、Users.jrxmlを再度開いて、レイアウトを修正します。

まずは、画面左のReport Inspectorから、Titleの下にあるCherry TitleとCherry Subtitleを選択して、右クリックして削除します。

択して、右クリックして削除します。

Rcdev5
次に、上がって来たパラメーターを表示できるように、Parameterを追加します。
Report InspectorからParametersを右クリックして追加します。

Rcdev6

追加したパラメータのName属性をパラメーター名「kps_ql」に変更するのを忘れないように。

次に、先ほど削除したTitleの場所に表示エリアを設けます。
まずは、ラベルとしてパレットのウインドウからStatic TextをTitleの位置にドラッグアンドドロップします。

20131114_14h03_45

初期状態ではStatic Textの文字の色が黒で、バックの色と重なって文字が見えないので、Static TextのプロパティからForecolorを白に変更しましょう。

Rcdev72
Static TextのTextプロパティを「Condition:」としておきます。

次に、先ほど追加したパラメーターを「Condition:」の横に設置します。

20131114_14h11_05

こちらのForecolorも白に変更しておきます。

20131114_14h13_29

これで修正完了。jrxmlファイルを保存して、帳票レコードに添付してあるjrxmlファイルを新しいものに入れ替えます。

これで、印刷ボタンを押すと。

20131114_14h18_42

タイトルのところに、conditionに渡した文字列が表示されて、ユーザータイプStandardのユーザーのみ表示されるようになりました。

このように、Javascriptからkpsrc.rcparms.xxxxxに文字列を乗せれば、帳票の任意の場所にそれを表示することができます。

今回は、一覧表をの印刷ボタンを組み込む方法を解説しましたが、単票印刷の場合は次の記事を参照してください

« これでKintoneでの帳票開発も楽々しかも無料 Reports Connect for Kintoneその3 | トップページ | Reports Connect for Kintone テーブルのデータの読込 »

Kintone」カテゴリの記事

Reports Connect」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1482716/53931903

この記事へのトラックバック一覧です: Reports Connect for Kintone アプリへの組込み方法:

« これでKintoneでの帳票開発も楽々しかも無料 Reports Connect for Kintoneその3 | トップページ | Reports Connect for Kintone テーブルのデータの読込 »