Job Runnerの定期実行タスクを使用すれば、複数のレコードに対してまとめてExcel/PDF出力を行い、出力したファイルをレコードに添付することが可能です。
定期実行タスクはその名の通り、1日ごとや1時間ごとなど定期的に処理を行うことができます。
また画面のカスタマイズで、やること「定期実行タスクを直ちに起動する」を使用し、ボタンを押した時に1度だけ処理を実行するといったことも可能です。
また、Job RunnerとExcel/PDF出力を組み合わせると、1時間に1回複数のレコードに対してPDFを出力したり、毎日決まった時間に集計結果をExcelファイルとして出力し、kintoneアプリに添付するといった処理が可能になります。
Excel/PDF出力のカスタマイズが初めての方は、次の記事も併せてご覧ください。
gusuku Customine Excel/PDF出力 スターターキット
今回は、定期実行タスクで「見積書」アプリの複数レコードに対してPDF出力を行い、そのレコードの添付ファイルフィールドに、出力したPDFファイルを添付するカスタマイズを紹介します。
kintone アプリの設定
「見積書」アプリと「テンプレートマスタ」アプリを用意します。
見積書アプリ:
「見積書」アプリは、見積に必要な情報を入力するアプリです。
このアプリのフィールドで、カスタマイズを実現するのに必須のものだけを示すと、次の通りです。
※フィールド名とフィールドコードは同じものを指定
次の例は、カスタマイズの完成後の「見積書」アプリの状態です。
定期実行タスク実行前:
添付ファイルと見積書ファイルフィールドは未入力の状態です。
定期実行タスク実行後:
添付ファイルフィールドにPDFファイルが添付され、見積書ファイルフィールドには”出力済”とセットされます。
テンプレートマスタアプリ:
「テンプレートマスタ」アプリは、Excel/PDF出力の元になる帳票テンプレートファイル(Excelファイル)を格納しておくためのアプリです。
このアプリのフィールドは
※フィールド名とフィールドコードは同じものを指定
PDF出力に使用するテンプレートは、次のように添付しておきます。
テンプレートの作成方法の詳細は、Excel/PDF出力 リファレンスマニュアルをご確認ください。
定期実行タスクのカスタマイズ
定期実行タスクのカスタマイズを作成します。
接続設定を行う
まず、やること「kintone 接続設定を行う」で「見積書」アプリと「テンプレートマスタ」アプリに接続します。
複数のアプリに接続設定を行う場合は、1つ目のアクションは条件「実行予定時刻になった時」を用い、2つ目以降のアクションは条件「他のアクションの実行が完了した時」を使い、つなげるようにします。
「見積書」アプリは、帳票にセットする値の取得と添付ファイルの添付(添付ファイルを含めて更新)を行うので、kintoneアプリのAPIトークンは「レコード閲覧」、「レコード編集」のアクセス権を設定します。
「テンプレートマスタ」アプリは、帳票の元になるファイルを取得するだけなので「レコード閲覧」のみのアクセス権を設定します。
テンプレートファイルを取得する
次に、「テンプレートマスタ」アプリからPDF出力に使用するテンプレートファイルを取得します。
やること「キーを指定してレコードを取得する」で、「テンプレートマスタ」アプリの「帳票名」フィールドの値が 見積書 と一致するレコードを取得します。
条件は「他のアクションの実行が完了した時」です。
PDF未出力のレコードを取得する
次に「見積書」アプリから、まだPDFが未出力のレコードを取得します。
やること「条件を組み立ててレコードを取得する」を使い、検索条件では「見積書ファイル」に対し、「in(“”)」となるように設定してください。
※条件ビルダーでチェックボックスフィールドに対して、「in(“”)」 となるように設定するには、改行を次のように1つ入れます(画像ではわかりにくいですが、改行が1つ入っています)。
なお今回は、「見積書ファイル」フィールドの値が未入力のレコードを”PDF未出力”である状態としています。
条件は「レコード1行が準備できた時」を用います。
この条件を使用すると、レコード取得アクションで指定したアクションで取得した複数のレコードを、1レコードずつ処理できます。
PDFを出力する
「見積書」アプリから取得されたレコードについて、1レコードずつPDFを出力していきます。
やることは「PDFを出力する」、条件は「レコード1行が準備できた時」を用います。
gusuku APIキーは、gusuku 共通管理画面で設定したものを入れます。
gusuku 共通管理画面の「APIキー」タブの、APIキー作成で任意の名称を入力し、APIキーを作成してください。
既存のAPIキーがあるならそちらを使用しても構いません。
作成したAPIキーの鍵マークをクリックして開き、「APIキー」に表示された文字列をコピーしてカスタマイズ画面の「gusuku API キー」に貼り付けてください。
データレコードは4番アクション、テンプレートレコードには3番アクション、テンプレートフィールドは3番アクションで取得した「テンプレートマスタ」アプリの「テンプレート」フィールドを指定します。
ファイル名には、4番アクションで取得した、「見積書」アプリの「見積書No」フィールドの値を指定します。
なお、もしここでPDFファイルではなくExcelファイルを出力したいのであれば、やることを「Excelを出力する」に置き換えてみてください。
出力したPDFファイルをセットする
最後に、出力されたPDFファイルを「見積書」アプリの添付ファイルフィールドにセットします。
やること「キーの値をもとにレコードを更新する」で、レコード番号をキーに更新します。
またマッピングで、「PDFを出力する」のアクション番号の結果を指定し、このレコードはPDF出力済であることを示すため、見積書ファイルフィールドに“出力済” をセットします。
以上で定期実行タスクのカスタマイズは完了です。
「ジョブ生成・設定」から「直ちに実行」ボタンを押すと、「見積書」アプリの未出力レコードそれぞれに対して、PDF出力が行われ、添付ファイルフィールドに出力されたPDFが添付されます。
なお、Excel/PDF出力は、それ以外の処理と比較して時間がかかる傾向があるため、実行結果は実行履歴タブで確認してください。
終了日時と実行時間(ミリ秒)が入っていれば処理は終了しており、入っていなければまだ処理中です。
定期実行スケジュールの設定
問題なく処理が実行できていることが確認できたら、必要であれば定期実行スケジュールを設定します。
次の設定例は、2021/8/12 0:00から、土日を除く毎日、1時間ごとに毎回定期実行タスクの処理を行うものです。
設定したら、最後に右下の「設定保存」を押してください。スケジュールが有効になります。
画面で呼び出すためのカスタマイズ
定期実行させるのではなく、ボタンを押した時に定期実行タスクを1回だけ実行することもできます。
やること「ボタンをメニュー位置に配置する」を、条件「一覧画面を表示した時」でボタンを配置します。
ボタンが押された際のやることは「定期実行タスクを直ちに起動する」、条件は「ボタンを押した時」を用います。
ここでもgusuku APIキーが必要となりますので、gusuku 共通管理画面から参照してください。
「kintoneアプリへ登録」を行い、一覧画面に表示されたボタンを押すと定期実行タスクが1回だけ実行され、PDFの出力と添付ファイルフィールドへの添付が一括で実行されます。
なお、定期実行タスクの処理が終了したかどうか知る術はないため、定期実行タスクのカスタマイズ画面の実行履歴から確認してください。
なお、定期実行タスクの実行が完了した時に発動する「条件」はないため、定期実行タスクの処理が完了したら画面を自動的にリロードする……といったカスタマイズは作成する事ができません。
おわりに
この記事では、複数のレコードに対して一括でPDFファイルを出力・格納する処理の例をご紹介しました。
ご不明点等ございましたら、チャットにてご質問ください。