ワードプレスの投稿記事をCSVデータとしてエクスポートしたデータから「編集後記」、「あとがき」などの指定した文章部分だけを抽出する方法を考えましたので備忘記録として記事にしておきます。
具体例として当ブログの記事の最後に紹介している「本日の1曲」について、今までに投稿したすべての過去記事からデータを引っ張ってみることにします。
今回やりたいことの概要
当ブログは毎回記事の最後に「本日の近況報告」という一言コメントと、自分の好きな音楽を紹介する「本日の1曲」というオマケを設けています。
こんなやつです↓
で、最近ふと今までどんな曲を紹介したのかを確認したいと思うようになりました。
というのも、過去にどんな曲を紹介したのかまでさすがに覚えていなので、そろそろ同じ曲を2回紹介するんじゃないかという不安のようなものが芽生えてきたからです。
なので、もし過去に投稿してきた全部の記事から下記の赤枠部分のデータだけを引っ張ってデータを一覧表にすることができれば2回紹介することを防げると思いました。
ということで、ゴールのイメージはこんな感じです。曲目とアーティスト名だけをデータとして抽出させる感じです↓
やりかたとしては
- プラグインをつかってワードプレスの記事データをCSVとしてエクスポート
- エクスポートしたデータをExcelでマクロや関数を使って加工
以上の処理をすることで実現できました。
プラグインWP CSV Exporterを使ってワードプレスの記事データをCSVでエクスポートする
まず、ワードプレスの記事データをエクスポートしていきます。
今回はプラグインを使用して投稿記事のデータをCSVデータとしてエクスポートしました。
プラグインの名前は「WP CSV Exporter」です。
レンタルサーバーの管理画面からデータベース(MySQL)を参照してデータを抽出することもできますが、自分も含めた初心者にはハードルが高く、何かのきっかけでブログが見れなくなってしまうリスクもありますので本記事では紹介しません。(自分の知識がないため紹介できません)
こちらのプラグインを使う方が簡単にできますし、わかりやすいです。
このプラグインを使ってワードプレスの投稿記事のデータをエクスポートするとこのようなデータになります。
エクスポートされたデータを見てみると
- D列には記事のタイトル
- E列に記事本文
- F列に記事の投稿日付
が記載されていることが確認できました。
エクスポートする項目に関しては他にもいくつか選択肢がありますので必要に応じてエクスポートする項目を決めましょう。
ということは、この吐き出したデータのうちE列のセルに記載された記事本文のデータから【本日の1曲】以降の文章をひっこぬくことができれば、いままで紹介してきた【本日の1曲】をデータで一覧することができるようになるはずです。
そのためにExcelマクロの関数である「split関数」を使ってE列のセルに記載された記事全文から【本日の1曲】というキーワードを目印にしてその前と後ろで記事を分割していきます。
Excelマクロのsplit関数を使って記事を指定したキーワードで区切る(分割)する
エクスポートしたデータから記事本文が記載されているE列のデータをマクロで加工していきます。
E列のセルに記載された中身を見てみるとHTMLのようなものがあったり、セル内で改行がされていることが確認できます↓
今回の目的はこの記事データの中から「本日の1曲」部分だけひっこ抜くことなので、ほかの記事部分については必要ありません。
この不要な部分を削除するためにExcelマクロのsplit関数を使って【本日の1曲】というキーワード目印に文章を区切る(分割)して行きます。
split関数を使ってE列のセル内に記載されたデータを分割する Excel マクロはこのような感じになります。分割したデータはG列に記載することにしています。
Sub split_data()
'■セルに入力されたデータから指定した任意の文字で
'■データを区切る(分割する)マクロ
'■変数宣言
Dim i As Long
Dim bunkatu As Variant
'エラー処理(任意の文字がなかった場合でも引き続き処理を実行する)
On Error Resume Next
'■処理実行部分
For i = 2 To 88
bunkatu = Split(Cells(i, 5), "【本日の1曲】")
Cells(i, 7) = "【本日の1曲】" & bunkatu(1)
Next i
End Sub
分割が終わったデータの状態を確認して見ると曲目とアーティスト名の部分が分割されていることが確認できました。
ただし、そのままでは使えそうにないデータが一部混ざっていました。
このままでは使いづらいのでセル内改行を削除していきます。
セル内改行の削除方法は
- エクセル関数を使って削除する方法
- マクロ使って削除する方法
の二つがありますが今回はわかりやすいエクセル関数を使ってセル内改行を削除しています。
substitute関数を使って改行データである「CHAR(10)」を削除していきます。
この作業をすることによってセル内改行が削除され、文字が連続したセルデータになっているはずです。
後はHTMLなどの不要な部分を削除していきます。
削除方法に関してはエクセルの置換作業で消していく方法などデータの種類によって行う作業が異なるのでここでは割愛します。
今回のデータの場合にはExcelの置換作業で不要なHTMLタグなどを削除していきました。
最終的にこんな感じで当初の目的通り今まで書いてきた過去記事から「本日の1曲」のアーティスト名と曲名を一覧にすることができました↓
まとめ
データを整理してみると「曲名の後にアーティスト名」が書かれていたり、「アーティスト名の後に曲名」が書かれていたりすることに気づきました。
WordPressの記事を作成する際にも何かしらの規則、ルールなどを守って記事を書いていくと今回のようにCSV データとしてエクスポートした後になんらかのデータ加工する際に楽に作業ができることを身をもって体験しました。
今後記事を作成する際には意識しようと思います。
ちなみにグーグルスプレッドシートにはこのsplit関数が標準で搭載されているので、Excelマクロを使用しなくてもスプレッドシートで作業をするとさらに簡単に作業できると思います。
【本日の近況報告】
disk unionにて2年ぶりくらいに7インチレコードを購入。↓で紹介しているやつです。
ちなみに2年前に買ったのはレコードストアデイのwhistle baitの再発7インチでデイドリームビリーバーとヒートウェーブが入ってるやつだったと思います。
その後illustratorの書籍を購入。
【本日の1曲】
gimcracks / papa’s got a brand new pigbag
日本のバンド、gimcracksの新曲が入った7インチレコードのB面に収録された1曲。カバー曲になります。
この曲が聴きたくてひさしぶりに7インチ買いました。
レコードって自分が大学生くらいの時は7インチ1枚1000円もしなかったんですが今は普通に1500円以上するんですよね。
値上がりしている理由がわかりませんが、懐には優しくないですね。。
曲のほうですが、オリジナルのpigbagがやってる曲はディスコパンク、ファンクな感じでカッコいいですが、こちらのカバーもオリジナルに負けないくらいくらいカッコいいです。スカナンバーにアレンジしてあります。
初めて知ったバンドなんですがSpotifyでほかの曲も聴いてみたところ、オリジナル曲もいい感じです。
Youtubeでこの曲のPVが見れるので気になる方は是非。
個人的にはこの曲紹介部分がメインで記事本文がおまけだったりするんですが。。。