はじめに

CustomineにExcel出力およびPDF出力が追加されました。

Excelで作成したテンプレートファイルにレコードのフィールド値をセットしたファイルを、ダウンロードしたりフィールドに添付したり出来ます。


こちらの記事より更にシンプルな3つのアクションで完結している「カンタン!PDF出力入門」という記事もありますので、そちらもぜひご確認ください!

 

まずはシンプルなメモアプリを作って、このような詳細画面を元に出力すると、

 

 

このようなファイルが出力する動きを試してみましょう。

 

 

事前準備 - アプリを作成

アプリは、メモアプリとテンプレートアプリを作成します。


メモアプリ

↑フィールドの下にフィールドコードを表示しています

 

フィールド名

フィールドコード

フィールドタイプ

日付

日付

日付

入力者

入力者

ユーザー選択

メモNo

メモNo

数値

タイトル

タイトル

文字列(1行)

出力ファイル

出力ファイル

添付ファイル

 

テーブル

フィールド名

フィールドコード

フィールドタイプ

詳細

詳細

文字列(複数行)

添付ファイル

添付ファイル

添付ファイル


テンプレートアプリ

↑フィールドの下にフィールドコードを表示しています

 

フィールド名

フィールドコード

フィールドタイプ

番号

番号

数値

名称

名称

文字列(1行)

テンプレート

テンプレート

添付ファイル

 

事前準備 - テンプレートファイルを作成

テンプレートファイルを作成

まず出力用のテンプレートファイルをExcelで作成します。

タイトルなどの決まっている文字、装飾、ページレイアウトなどを入力・設定して保存してください。

その次に反映したいフィールドのフィールドコードを確認しておきます。そしてフィールド値をセットしたいセルに次のように入力します。

 

$(タイトル)

 

こうすると出力時に指定したフィールドコードのフィールド値が自動でセットされます。書式に関する詳細については、こちらのリファレンスマニュアルも併せてご確認ください。

 

このテンプレートでは、テーブル外のフィールド値とテーブル内の各行を表示しつつ、添付ファイルも全て出力するような内容になっています。

 

テンプレートファイルを添付

作ったテンプレートをアプリの添付ファイルに保存します。保存先としては最初に作成したように、テンプレートアプリを用意して一元管理する方法がオススメです。

登録したテンプレートファイルは「キーを指定してレコードを取得する」などを使ってテンプレート名やテンプレート番号をキーにして取得するのが良いと思います。

 

別な方法としては全レコード取得してから「レコードを選択するプルダウンをメニュー位置に配置する」や「レコードを選択するプルダウンをスペースに配置する」を使ってテンプレートを選択するという動きも考えられます。

 

出力してみよう

それでは事前準備で用意したメモアプリを選択し、カスタマイズの作成を開始します。
具体的には詳細画面でボタンを押したら、Excelを出力してレコードに添付する動きを作成してみます。

設定は次のようになります。

最初に「詳細画面を表示した時」に「ボタンをメニュー位置に配置する」でボタンを配置します。

次に「ボタンを押した時」に「キーを指定してレコードを取得する」でテンプレートファイルが添付されているレコードを取得します。

 

テンプレートが取得できたら「Excelを出力する」で出力します。

gusuku APIキーは、 共通管理画面のAPIキータブ で作成することが可能です。

このAPIキーは、今回のアプリ用に新たにわかりやすい名前をつけて作成してください。

また、出力先を「添付ファイルフィールド」が含まれる選択肢にした場合だけ添付ファイルフィールドへの書き込みデータが作成されます。

 

出力が終わったら「レコードを更新する(キーの値をフィールドで指定)」で添付ファイルにセットします。

そして最後に「画面をリロードする」でリロードすると添付されているのが確認できます。

この書き方では出力するたびに上書き保存されますが、追記したい場合には「append関数」を使って

= append(出力ファイル, $3)

のように書けますので、お試しください。

また、PDF出力を試してみたい方は、「Excelを出力する」を「PDFを出力する」に変えて試してみてください!


一覧画面から複数レコードを出力する例 

また上記の例とは異なる出力例として、一覧画面から複数レコードを出力することも出来ます。

ここでは、「一覧にチェックボックス列を追加する」で一覧画面にチェックボックスを追加して、「一覧で選択されたレコードを取得する」で選択したレコードをExcel出力してダウンロードするようにしてみます。

 

 

一覧画面で指定したレコードは、レコード全てを1シートに出力したり、レコード単位でシートを分けたりする事が可能です。

 

レコード全てを出力するには次のように$FOREACH〜$ENDを使います(コマンドの詳細はリファレンスマニュアルをご覧ください)。

 

 

$FOREACHは$ENDで閉じるまでは、同じ列に複数個記述することはできないことにご注意ください。以下のような例でいうと、A1とA6のセル、B3とB5のセルがそれぞれ対になっています。

 

また、複数レコードを出力する時はテンプレートのシート名を

 

#詳細

 

のように先頭に「#」をつけておくと、レコード数の分だけ自動的にシートが複製されます。

 

 

なお、上記の「一覧」のように#がついていない場合はそのまま出力されます。

 

PDF出力時の制限について


PDF仕様時の制限については、こちらのページを参照してください。

 

特に、使用できるフォントに制限がある、日付の書式はアスタリスク(*)が無いものを指定しないとUS(米国)表記になる、などの点に注意が必要です。


Job Runnerで出力する方法

アプリカスタマイズとは違い、レコード保存やステータス変更のタイミングで自動作成してフィールドに添付が可能です。

まず先ほどと同じように、テンプレートファイルを添付しておきます。

 

例として、ステータス変更時で特定のステータスのときだけファイルを添付するカスタマイズは次のようになります。

 

最初に、「Webhook を開始した時」に「Webhookの発生がステータスの更新によるならば」処理を実行するように条件を設定します。

kintone 接続設定を行う」では、テンプレートアプリと出力ファイルを添付するメモアプリの2つを設定します。


その後「Webhook から渡されたレコードを取得する」でメモアプリのレコードを取得して「ステータスが特定の値ならば」でステータスが特定の値のときだけ出力処理に移ります。

キーを指定してレコードを取得する」でテンプレートファイルを取得してから、「Excelを出力する」と「PDFを出力する」でファイルを出力します。

ただ、そのままだと出力しただけで終わってしまうので、「フィールドに値をセットする」でwebhookで送られてきたレコードに添付します。

こうすることで、Job Runnerが自動的にレコード更新してくれます。


このカスタマイズのポイントとしては、詳細画面での例のように複数のファイルを添付する処理の場合に、自動連携で処理できることと処理の処理完了を待たなくても良いということがあります。

日常的に多くの件数(レコード数)を処理する場合には便利な方法なので、ぜひお試しください。


まとめ

テンプレートファイルを作ることで簡単に出力できます。出力先はダウンロードだったりフィールドに添付など自由に選べます。

また、Job Runnerを使うと複数の出力を一度に作成できるので、レイアウトの違う出力を一度に作成したい場合などにも便利です。


今回は触れなかったのですが、ファイル名やシート名にフィールド値やフィールド値を含んだ任意の文字列を指定できるため、顧客名別にファイル名を変えた出力をする事もでき、ファイル名でどの顧客向けのファイルか識別できるように出力頂く事も可能です。


詳細はリファレンスマニュアルをご確認ください。