Umi Blog
ウミブログ
![Views で CSV や JSON を書き出そう [一歩進んだ Views の使い方]](/_next/image?url=%2Ffiles%2F02%2Fa0%2Flaptop-with-code-and-coffee.jpg&w=3840&q=75)
これは Drupal Advent Calendar 2018 18 日目の記事です。
こんにちは。
去る 2018/11/17 に開催された Drupal Camp DEN のセッションで 「一歩進んだ Views の使い方」と題して Views でできることと作り方の要点をいくつかざっくりとお伝えしました。当日は時間が限られていたこともありいろいろ端折ってしまいましたので、フォローアップとしていくつか記事を投稿します。今回はスライド 12 枚目の 「CSV / JSON への書き出し」を詳しく説明していきます。
ユーザーの動線を解析しマーケティングにつなげていくといったマーケティングオートメーションはここ2年ほどで急激に流行していますね。登録されたユーザーのアクセス情報、ECサイトの購買情報、お問い合わせフォームの送信済の情報などの解析したいデータは Excel 等の表計算ソフトや他のシステムでも扱いやすい CSV で書き出したいところ。 また、DEN の基調講演で Aquia 社の Preston さんがおっしゃっていたように、今後の Drupal は デカップルド(フロントエンドとバックエンドの分離化)が進み、 API ファーストを推進していく方向にあることから今後 JSON の需要も拡大していくことでしょう。
…と、前置きはこのくらいにして、この記事ではそんな需要の高まりを感じる CSV や JSON ファイルの Views を使った Drupal での書き出し方法を詳しくキャプチャ画像も交えてご説明いたします。
standard を選択している今回利用する寄与モジュールは以下の1つだけです。
| パッケージ | 名前 | バージョン |
|---|---|---|
| ウェブサービス | Serialization (CSV) (csv_serialization) | 8.x-1.4 |
ちなみに、書き出すのが JSON のみであれば Serialization (CSV) モジュールはインストール不要です。 また、下記のコアモジュールもインストールします。
上記モジュールがそれぞれ有効化された状態からスタートします。このあとの作業工程では CSV ファイルの書き出しを行っていますが、JSON ファイルの書き出しも1つの作業を除いて同じ工程で設定を進めることができます。
前述の条件の通りコンテンツは作成済の想定ですので早速 Views を作成からとりかかります。
以下のページにアクセスします。
ホーム » Administration » サイト構築 » ビューズ
(パス: /admin/structure/views)
「 ビューを追加 」をクリックします。
下記の情報を入力しします。
article_csv_json としました。article/data としました。ビューの名前 や REST エクスポートパス などはお好みで自由に設定するとよいでしょう。
情報を入力したら「 保存して編集 」をクリックします。
次の画面に移ったら続けて フォーマット: シリアライザー の右にある 設定 をクリックします。
受け付けるリクエスト形式 のうち、 csv にチェックを入れ、 「 Apply 」をクリックします。
ここで json を選択すれば JSON 形式で作成することができます。
続けて 表示: の右にある Entity をクリックして Fields を選択して「 適用 」をクリックします。
すると REST export: 行スタイルのオプション というモーダルウインドウが出てきますが、あとで調整しますので特に何も変更せずに 「 Apply 」 をクリックします。
ここまできたら FIELDS にタイトルフィールドが既にあるはずなので、あとは画像フィールドを用意します。 今回は画像のフルパスを取得したいのですが、単純にフィールドを追加するだけではドメインも含めたURLは取得できません。少し工夫して取得することにします。
Views の設定画面の3つ目のカラム、 高度 の中の リレーションシップ の 追加 をクリックしたら Article のコンテンツタイプで使用されている画像フィールドをクリックし、「 リレーションシップを追加して設定 」 をクリックします。管理用タイトルは任意でわかりやすいものを設定し、 「 Apply 」 をクリックします。
画像のリレーションシップが追加できたら次は FIELDS 右の 「 追加 」 をクリックし、カテゴリが ファイル の URIを選択して 「 フィールドを追加して設定 」をクリックします。
リレーションシップ が 画像 になっていることを確認したら Display the file download URI にチェックを入れ 「 Apply 」 をクリックします。
あとはカラム名を変更したいのであれば 表示: Fields の右にある 設定 をクリックし、それぞれのフィールドのエイリアスに変更したいカラム名を入力して「 Apply 」をクリックします。
最後に「 保存 」をクリックすれば CSV の作成は完了です!
設定したパスにアクセスしてみましょう。 今回の記事で作成したパスなら下記の URL でアクセスできます。
http://ドメイン/article/data
多くのブラウザであればアクセスするとダウンロードを開始しますので、保存してファイルを開いてみてください。弊社 Web サイトのお知らせを5件登録した状態でアクセスすると、下記の内容の CSV ファイルを取得することができました。
article_name,image
"「Drupal Camp DEN Japan Vol.1」に出展します",http://ドメイン/sites/default/files/2018-12/Drupal_camp_Banner.png
2018年度夏季休業のお知らせ,
"第12回 Web&デジタル マーケティング EXPO【春】出展のお知らせ",http://ドメイン/sites/default/files/2018-12/japanitweek2018.png
年末年始休業のお知らせ,
"国内Drupalサイトギャラリー「Drupal Dawn」公開のお知らせ",http://ドメイン/sites/default/files/2018-12/drupaldawn-img.png
ついでに JSON で設定したら下記の様に出力されました。
[
{
article_name: "「Drupal Camp DEN Japan Vol.1」に出展します",
image: "http://ドメイン/sites/default/files/2018-12/Drupal_camp_Banner.png"
},
{
article_name: "2018年度夏季休業のお知らせ",
image: ""
},
{
article_name: "第12回 Web&デジタル マーケティング EXPO【春】出展のお知らせ",
image: "http://ドメイン/sites/default/files/2018-12/japanitweek2018.png"
},
{
article_name: "年末年始休業のお知らせ",
image: ""
},
{
article_name: "国内Drupalサイトギャラリー「Drupal Dawn」公開のお知らせ",
image: "http://ドメイン/sites/default/files/2018-12/drupaldawn-img.png"
}
]
キャプチャ画像を多めに説明いたしましたが、いかがでしたでしょうか? こういった CSV や JSON への書き出しは Drupal 7 の Views でも対応できましたが、 Drupal 8 からは Views や REST API がコアに搭載されたことで更に作りやすくなりました。 こういった Views の作り方をおさえていくことで、アイデア次第でできることが増えることでしょう。
それでは、よい Views ライフをお過ごしください ;)
小さなご意見も、私たちにとっては大きなヒントです!
ぜひ率直なご感想をお寄せください
この

Masters of Drupal Engineering.
人に、