カスタム処理を利用して、CSV出力されるデータ構造を変更する
概要
カスタム処理を使用して、APIが標準で出力するデータを加工できます。 今回は、CSV形式で出力される記事一覧データに管理画面編集ページへのURLを追加します。
学べること
APIを利用したCSV出力を以下の手順で加工します。
前提条件
このチュートリアルでは、コンテンツ一覧のエンドポイントに後処理でカスタム処理を適用し、対象のエンドポイントがCSV形式でレスポンスを返した場合にカスタム処理を実行します。
エンドポイントからCSV形式でレスポンスを得る方法は以下のドキュメントを参照ください。
カスタム処理を作成する
それではカスタム処理を作成します。
1. カスタム処理の一覧画面を表示する
メニューの[オペレーション] -> [カスタム処理] をクリックします。
2. カスタム処理の編集画面を表示する
カスタム処理一覧画面の右上の [追加] をクリックします。
すると、カスタム処理編集画面が表示されます。
3. タイトル・識別子を記入する
それではカスタム処理を作成していきます。
まずはタイトルと識別子に記入します。今回は下記のように記入します。
- タイトル:コンテンツCSV編集
- 識別子:sample1_postprocess
- トリガー: 未指定
タイトル・識別子は他のカスタム処理と重複できません。 実装対象のエンドポイント名など、他と重複しない内容で記入してください。
4. データ操作処理を記述する
次に、実際の処理を記述します。
エディタ内にデータを追加する処理を記述していきます。
コンテンツIDを取得する処理を記述する
まずは、コンテンツIDを取得するためにヘッダー行を読み取ります。
利用できる変数は下記となります。
変数名 | 型 | 説明 |
---|---|---|
$json.csv_data | object | コンテンツデータ |
エディタに下記記入します。
{assign_array var=processed_list values=""}
{* CSVの場合 *}
{if $json.csv_data}
{foreach from=$json.csv_data item=row name=csv_data}
{if $smarty.foreach.csv_data.index eq 0}{* ヘッダー行 *}
{foreach from=$row item=header_title name=header_data}
{if $header_title eq 'コンテンツID'}
{* コンテンツID列を取得 *}
{assign var=contents_id_col_index value=$smarty.foreach.header_data.index}
{/if}
{/foreach}
{append var=row value="編集ページURL"}
{else}{* データ *}
{assign var=url value=$smarty.const.ROOT_MNG_URL|cat:'/management/topics/topics_edit/?topics_id='|cat:$row.$contents_id_col_index}
{append var=row value=$url}
{/if}
{append var=processed_list value=$row}
{/foreach}
{assign var=json.csv_data value=$processed_list}
{/if}
編集したデータを出力する
変数名 | 型 | 説明 |
---|---|---|
$processed_json | object | コンテンツデータ |
{assign var=processed_json value=$json}
6. カスタム処理を保存する
処理の記述が完了したら、[追加する] ボタンをクリックして保存します。
以上でカスタム処理の完成です。
エンドポイントにカスタム処理を登録する
作成したカスタム処理をエンドポイントの後処理に追加します。
詳しくは、API後処理を参照してください。
動作確認
以下の手順で動作確認をします。
1. CSVファイルをダウンロードする。
設定したカスタム処理はCSVで出力した場合に動作するので、_output_format=csv
のクエリパラメータを付けてエンドポイントにアクセスします。
上記でカスタム処理を登録したAPIエンドポイントへアクセスし、CSVファイルをダウンロードします。
https://[サイトキー].g.kuroco.app/rcms-api/**/topics/download?topics_group_id=**&_output_format=csv
以下3点はご自身のサイトのものを入力してください。
https://[サイトキー].g.kuroco.app
サイトのAPIドメインを入力して下さい。
[環境設定] > [アカウント設定]の画面で確認ができます。/rcms-api/**/topics/download
エンドポイントにカスタム処理を登録するのステップでカスタム処理を登録したAPIエンドポイントを入力して下さい。topics_group_id=**
一覧にしたいコンテンツ定義のIDを**
に入力して下さい。IDはコンテンツ定義一覧の画面から確認できます。
2. ファイルの内容を確認する。
CSVがUTF-8で保存されるので、メモ帳で開く、もしくはエクセルでインポートして、「編集ページURL」の列が追加されていることを確認します。
以上で本チュートリアルは完了です。
注意点
出力するデータが大きくなる場合、メモリオーバーエラーやタイムアウトの発生する可能性があります。 この場合はバッチ処理化をご検討ください。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。