[Drupal] Viewsの結果をCSVにエクスポートする方法


今回はViews Data Exportモジュールを使用してViewsの結果をCSVにエクスポートする方法を紹介したいと思います。

やりたいこと

任意のビューのヘッダーにCSVエクスポート用のリンクを設置して、リンクをクリックするとビューの内容をCSVにしたファイルがダウンロードされるようにしたい。

画面のイメージ:

ダウンロードできるCSVのイメージ:

タイトル,コンテンツタイプ,投稿者,状態,更新
Test,記事,test,Published,"2021/01/28 - 10:00"
Test2,記事,test,Unpublished,"2021/02/26 - 22:10"

Views Data Exportモジュールのインストール

まずは通常通りモジュールをインストールします。

composer require drupal/views_data_export
drush en views_data_export

データエクスポートディスプレイの設定

次に、CSVを追加したいビューの設定画面を開き、画面左上からデータエクスポートのディスプレイを追加します。このディスプレイに対してCSVの設定を行っていきます。

主要なものとしては、以下の画像の設定項目から、ファイルの形式(CSV、TSV、XMLから選べます)、ファイルのリクエストに使用するパスやダウンロード時のファイル名、パスに対するアクセス制限カラムの種類やラベルを設定できます。(今回は編集ボタンなど不要なフィールドは削除します。)

ちなみに、CSVへのリンクを貼りたいディスプレイのフィルターの条件で外部設置フィルターが設定されている場合、データエクスポートディスプレイ側でも同様の外部設置フィルターを設置しておくと、元のディスプレイで絞込んだ結果がそのままCSVにも反映されます。もしCSVの方は絞り込みたくないのであれば単純にデータエクスポートディスプレイ側の外部設置フィルターを削除すればOKです。

設定を保存したら、ブラウザにパスを直打ちするとCSVがダウンロードできるようになります。(この設定画面右上の「データエクスポートを表示」をクリックでもダウンロードできます。)

データエクスポートディスプレイへのリンクの設置

ここでCSVへのリンクを貼りたいディスプレイの設定画面を開き、ヘッダーの「追加」をクリックします。

Link to displayをチェックし、保存します。表示でさきほど作成したディスプレイを選択します。ラベルにはリンクテキストにしたい文字列を入力します。

ここでビューを保存します。

CSVへのリンクが表示されているのが確認できると思います。

外部設置フィルターで絞込んだ状態でCSVをエクスポートしたら...

中身もしっかり絞り込まれてますね

Title,"Content type",Author,Status,Updated
Test2,記事,test,Unpublished,"2021/02/26 - 22:10"

というわけで、Viewsの結果をCSVにエクスポートする方法の紹介でした。