![](/acms/archives/003/201612/886427ca890612c8e8244d4026a8d942.jpg)
こちらは、Movable Type Advent Calendar 2016の17日目のエントリーです。
なんと4日前に書いてます!うぇびんさんらしくないですね!
今年は、Movable TypeでCSV形式のエクスポート・インポートが可能になるプラグイン「CSVDataImExporter」の使い方を解説します。
はじめに・ライセンス体系について
このプラグインは基本有償です。試用版は15日間すべての機能を利用できますが、それ以降はインポート可能なデータの範囲とサイトの目的で、ライセンス料金が変わります。詳しくはリンク先を参照ください。
画像カスタムフィールドを含む場合は、最上位の「④ブログ記事 + ウェブページ + カスタムフィールド + カスタムフィールドアイテムアップロード対応版」をお勧めします。この記事でも、④での導入経験を前提に解説していきます。
エクスポートする
![](/acms/archives/003/201612/36dba398221c9299c030999c11167367.jpg)
プラグインをMovable Type内に設置すると、左メニューの「ツール」に「CSVデータのエクスポート」が加わります。エクスポートするブログを選択してエクスポートボタンを押せば、CSVデータがダウンロードされます。
このCSVをExcel::mac2008で開くと、本文のHTMLが崩れてしまい編集できません。最新のExcelであれば問題ないと思います。Googleスプレッドシートへのインポートでは正常な解析を確認しています。
CSVデータを作る
エクスポートしたデータを編集する形で、インポート用データを作成していきます。カスタムフィールドは空であってもセルを消さないでください。
「id」列
空にしてください。
「author」列
執筆者にしたいアカウントのログインIDを入力してください。デフォルト投稿者を指定する機能はないのでこの項目は必須です。
「categories」列
![](/acms/archives/003/201612/d6dd68a307d0ddb60fcfc60084796e13.jpg)
ID指定・ベースネーム指定も受け付けますが、重複がないのなら表示名(ラベル)が編集しやすいです。
子カテゴリを指定するときは、「親+半角ハイフン2個+子」としてください。親カテゴリにも属させると、画像のような指定となります。
もう使っている人は少ないと思いますが、OpenOfficeは半角ハイフン2個を勝手にダッシュに変換するので、こちらも注意してください。
![](/acms/archives/003/201612/b3601e4ac74088471653dec0d2286988.jpg)
カテゴリーが存在していなかった場合は自動で作成してくれますが、その際にラベルがマルチバイトだった場合は、すべて「a」に変換されたものがベースネームとなります。
画像カスタムフィールド
画像をサーバーのどこかへ置いておき、フルパスで指定して読み込ませます。たとえば、公開サーバーが /home/www/ にあり、そこの「csvdata」に画像を置いている場合は以下のように指定します。
/home/www/csvdata/test01.jpg
用意するのは原寸画像だけで、サムネイルの準備は不要です。インポート後の元画像は、ブログの公開パス以下の「assets」というディレクトリにコピーされます。
インポート前の確認
![](/acms/archives/003/201612/803574966aedd627993bf1cfacf385cf.jpg)
CSVデータができたら、いちどSublime Textなどのエディタで開き、形式に問題がないか確認してください。
Excelで編集していた場合、エンコードが「Western(windows 1252)」になっているはずです。改行コードは「CRLF」をおすすめします(この記事を執筆した時点では正式版のみ「CR」にも対応しています)。
CSVデータをインポートする
![](/acms/archives/003/201612/7c78832c6de8e7ec21b6863dc2aed307.jpg)
インポートは左メニュー「ツール」内の「記事のインポート」から行います。インポート元に「CSV」が選択できるようになっています。事前に必ずデータベースのバックアップを取ってください。
画像の通り、指定記事IDがない場合は新規作成するようにして、インポートを開始します。
![](/acms/archives/003/201612/c3dd8b124040190b12cca321bf64e633.jpg)
進行状況の画面になります。「CSVデータのインポート開始…」で止まってしまった場合は、CSVデータに何らかの不備があってインポートが中止されています。文字コードや改行コードを見直してください。
![](/acms/archives/003/201612/79b13e282075eaf29bd4e419577558e8.jpg)
エントリーにカテゴリーや画像の関連付けが行われていれば成功です。「*** 0行目のCSVデータの項目数(00)がヘッダの項目数(00)と不一致です」というメッセージは一番最後=行末のセルが空だと表示されるものなので、問題ありません。
![](/acms/archives/003/201612/a3a9bf562b3d29abd0d4a5c0f2ca794f.jpg)
画像のパスを間違えていた場合、対象の項目は空にはならず、間違ったパスが入ったままリンク切れになってしまいます。これは上書き修正でのCSVインポートを行うか、手作業でアップロードし直すことになります。
インポート後の注意点
形式にさえ注意すればとても便利な「CSVDataImExporter」ですが、画像をインポートした場合にはもうひとつ注意が必要です。
管理画面用のサムネイルはインポート後に左メニューの「アイテム」画面へ移動するまで生成されないようです。このため、大量にインポートしてから移動すると、一気に生成がはじまり一覧の表示に時間がかかります。スペックが少ないサーバーだと最悪落ちます。
これを防ぎたい場合は、100件単位くらいにデータを分け、インポートしたら「アイテム」画面を一旦表示するのが良いと思います。
なんだか今年は、こういったデータ解析や検証のお仕事が多い一年でした。資料作成やデータ作成で一年の三分の一くらいスプレッドシートを書いていたような気がします。
方眼用紙みたいな使い方をしなければ、スプレッドシートはCMSと相性が良いツールです。ほぼすべてのCMSでCSVインポートを使えるようになったので、CMS同士の引越しや新しいCMSのテストもやりやすくなりました。最新のMovable Typeに興味がある方はぜひお試しを。