mt-csv2customfields

mt-csv2customfields

Posted at March 24,2008 3:33 AM
Tag:[MovableType, mt-csv2customfields, Script]

「CSV形式のデータを Movable Type のカスタムフィールドに一括読み込みさせたい」という要望がかなり多いようなので、スクリプト mt-csv2customfields.cgi を作成しました。

CSVファイルを読み込み、新規ブログ記事のカスタムフィールドに登録します。

2011.07.11 より高機能なプラグイン「CSVDataImExporter」をリリースしました。

1.機能

今のところできるのは次の通りです。

  • 新規ブログ記事のみ対応
  • タイトルの書き込み
  • 本文の書き込み
  • カテゴリーまたはサブカテゴリーの書き込み。カテゴリーが存在しない場合は新規作成(トップレベルのみ)
  • タグの書き込み(複数設定可能)
  • 出力ファイル名の書き込み
  • コメント受信設定・トラックバック受信設定の書き込み
  • カスタムフィールド(テキスト形式)の書き込み
  • 複数のカスタムフィールドに対応
  • 既存のブログ記事タイトルを指定した場合、カスタムフィールドのみ上書き(他のフィールドの内容は無視)

CSVのフォーマット

CSVデータは次のフォーマットにしてください。

1行目:
タイトル:'title'を設定
本文:'text'を設定
カテゴリー:'category'を設定
タグ:'tags'を設定
出力ファイル名:'basename'を設定
コメント受信設定:'allow_comments'を設定(0:非許容/1:許容)
トラックバック受信設定:'allow_pings'を設定(0:非許容/1:許容)
カスタムフィールド:カスタムフィールドのベースネームを設定

2行目以降:フィールドに対応したデータ。
カテゴリーは新規のトップカテゴリー(他と重複しない名称)または既存のカテゴリー名(サブカテゴリーであればサブカテゴリー名のみ設定)。
タグは新規のタグも大丈夫で、":"で区切れば複数設定できます。

なお、CSVデータはUTF-8のものしか確認ができておりません。

3.CSVデータのサンプル

title,text,category,tags,basename,allow_comments,allow_pings,test1,test2,test3
たいとる1,てきすとの内容1,カテゴリー1,タグ1:タグ2,aaa,1,1,カスタムフィールド1の内容1,カスタムフィールド2の内容1,カスタムフィールド3の内容1
たいとる2,てきすとの内容2,カテゴリー2,タグ3:タグ4,bbb,0,0,カスタムフィールド1の内容2,カスタムフィールド2の内容2,カスタムフィールド3の内容2
たいとる3,てきすとの内容3,カテゴリー3,タグ5:タグ6,ccc,1,0,カスタムフィールド1の内容3,カスタムフィールド2の内容3,カスタムフィールド3の内容3

4.ライセンス

4.1 商用ライセンスの Movable Type で利用する場合

商用ライセンスの Movable Type で利用する場合は、有償(3000円/1サーバ)とさせて頂きます。お振込み方法につきましては、お問い合わせよりメールにてご連絡ください。

以下のPaypalからもご利用頂けます。

4.2 個人ライセンス(無償)と組み合わせる場合

個人ライセンス(無償)と組み合わせる場合は、無償でご利用ください。

5.インストール

下記のファイルをダウンロードして、展開した中にあるmt-csv2customfields.cgi をアプリケーションディレクトリにアップロードし、CGIが実行可能なパーミッションを変更してください。

mt-csv2customfields.zip

たいしたスクリプトではありません。α版ということでお試しください。

修正履歴

v0.01 2008.03.24 初版
v0.02 2008.04.21 カテゴリーとタグに対応。head / body 要素の重複削除
v0.03 2009.11.17 出力ファイル名、コメント受信設定、トラックバック受信設定に対応

6.利用方法

ブラウザから mt-csv2customfields.cgi にアクセスすると、次のような画面が表示されるので、ブログのID、ユーザーIDを数字で設定し、CSVファイルを選択して送信をクリックしてください。

mt-csv2customfields.cgi にアクセスした画面

正常に実行できれば次のような画面が表示されます。

mt-csv2customfields.cgi にアクセスした画面

登録後のブログ記事編集画面です。

mt-csv2customfields.cgi にアクセスした画面

関連記事
トラックバックURL


コメント

便利なツールをありがとうございます。

ところで、これはカテゴリの設定はできませんか?

[1] Posted by yoshi : April 19, 2008 12:06 PM

>yoshiさん
こんにちは。
ご質問の件ですが、ご要望の機能を追加してみました。
それではよろしくお願い致します。

[2] Posted by yujiro logo : April 21, 2008 12:29 AM

ありがとうございます!大変助かります。

[3] Posted by yoshi : April 21, 2008 9:17 PM

便利なツールをありがとうございます。
やりたいことはまさにコレって感じで、ありがたく使わせていただいてます。

2つのレンタルサーバで試してみましたが「UTF-8」だと、肝心のタイトルだけ何故か空っぽ(記事のリストで見ると「…」)になってしまいます。
(本文~カスタムフィールドは全て問題なく一括入力できています。)

「UTF-8N」で保存しなおしたところ、ようやくタイトルも含めて夢の一括読み込みができたのですが、個人的にちょっと不具合が…。

というのは、ブログ記事の出力ファイル名を指定したかったんです。
CSVデータ「本文欄」の冒頭に「希望のファイル名(英数字)」を追加して読み込むというやり方で出力ファイル名を指定していたのですが、UTF-8Nではこの方法が通用しないようです。(MT側が勝手につける「post」「post-1」等になってしまいます。)

UTF-8のときはタイトルが入らない代わりに出力ファイル名は希望通りの設定ができていたので、今はとりあえずUTF-8で読み込んだ後、タイトルを元ファイルからコピペしてます。

出力ファイル名も設定できるとウレシイのですが。

ちょっとハマってしまったので僭越ながら報告させていただきました。
報告ついでで恐縮ですが、以下さらにワガママな要望をいくつか…

ブログの設定でコメント&トラバを許可しているのですが、読み込まれた記事ではチェックが外れてしまいます。
ここも設定できたらハッピーです。

最後に一気に読み込むと公開時間が同じになってしまうせいか、idは読み込み順にキレイに並んでいるのですが、投稿順が逆?になってしまいます。
入力元のCSVデータには入力日のデータもあるので、できれば公開日も操作できると最高なんですけど^^

以上、ワガママ放題な長文コメントで失礼いたしました。

[4] Posted by moppy : May 10, 2008 2:23 PM

>moppyさん
こんばんは。
ご返事遅くなり申し訳ありません。
タイトル&コメント&トラックバック&公開日の件、ご要望承りました。

[5] Posted by yujiro logo : May 17, 2008 4:09 AM

誤ってUTF-8ではなく、shift-jisで保存してアップロードをしてしまいました。
そのため、誤ってアップしてしまったエントリーやカテゴリーをMTの管理画面で削除しようとしたところ以下のようなメッセージが現れて削除が出来ませんでした。
こうなってしまうと、どのエントリーも削除をすることが出来なくなります。
一旦、UTF-8以外でアップしてしまったらもう消すことは出来ないのでしょうか?


エラーメッセージ
close Can't call method "execute" on an undefined value at /home/******/www/******/blogmt/extlib/Data/ObjectDriver/Driver/DBI.pm line 486.

[6] Posted by Google Account logo : May 23, 2008 4:24 AM

便利なツールをありがとうございます。
質問ですが、カテゴリは1つしか選べないのでしょうか?
複数カテゴリが選択できたらいいなぁと思ったので、よろしくおねがいします。

[7] Posted by ねも : October 7, 2008 8:26 PM

>ねもさん
こんにちは。
ご要望事項として、複数カテゴリについて承りました。
可能であれば実装したいと思います。

[8] Posted by yujiro logo : October 8, 2008 12:05 PM

夢のようなツールありがとうございます。
ただ私も上記の方と同じように、サブカテゴリー、ファイル名、が使えたらとってもうれしいです!!

[9] Posted by TAKU : January 14, 2009 12:23 AM

>TAKUさん
こんにちは。
コメントの件、ご要望事項として承りました。
すいませんが今しばらくお時間ください。
それではよろしくお願いいたします。

[10] Posted by yujiro logo : January 14, 2009 2:56 PM

こんにちは。いつも楽しく拝見させていただいており
ありがとうございます。

ご質問になりますが
MTOSでは上記のツールは満たされないのでしょうか?
お手数ですがご教授いただけますでしょうか。

[11] Posted by ichicorocoro : April 15, 2009 12:39 PM

>ichicorocoroさん
こんばんは。
ご質問の件ですが、MTOSでもご利用ください。

[12] Posted by yujiro logo : April 17, 2009 8:42 PM

カスタムフィールドが画像の場合も対応でしょうか?
その場合、単純にファイル名で大丈夫でしょうか?

[13] Posted by ttr : April 29, 2009 11:39 PM

こんばんは。いつも貴サイト大変活用させていただいております。

一点ご質問なのですが、こちらのツールをブログ記事ではなくウェブページに対応させることは可能でしょうか?
自力でなんとかできないかとcgiの中身を少しだけいじらせていただいたところ、既存ウェブページにカスタムフィールドの値を上書きすることは簡単にできるようになったんですが、新規ウェブページの処理で行き詰まってしまいました。
もし対応可能であれば、改変箇所などご助言をいただければ幸甚です。

[14] Posted by たまき : May 18, 2009 1:20 AM

>たまきさん
こんばんは。
ご返事遅くなり申し訳ありません。
ご質問の件ですが、下記の2行を利用すれば可能と思われますので、お試しください。

下記を追加

use MT::Page;

また、

$entry = MT::Entry->new;

を下記に変更

$entry = MT::Page->new;

それではよろしくお願い致します。

[15] Posted by yujiro logo : June 7, 2009 1:29 AM

こんにちは。ご回答ありがとうございました。
確認が遅くなりまして申し訳ございません。
ご教示いただいた方法で、無事にウェブページに対応させることができました。
フォルダ登録の部分で少し手間取ってしまいましたが、教えていただいたことをヒントにクリアすることができました。
ついでに概要や追記も項目追加させていただき、おかげさまでウェブぺージの一括登録がとってもスムーズにできるようになりました。
本当にありがとうございました!

[16] Posted by たまき : June 26, 2009 2:30 PM

>たまきさん
こんばんは。
ご連絡ありがとうございました。
うまくできたようでよかったです。
ではでは!

[17] Posted by yujiro logo : June 27, 2009 2:36 AM

はじめまして。
こちらのプラグインをつかってMTOSにCSVファイルのアップロードを試みているんですが、以前のバージョンのコメントにあったのを元に
MTOS本 の自作カスタムフィールドの値をインポートしようと試みたのですが上手く行きませんでした。

my @field = ('title','text','category','tags','allow_comments','allow_pings','basename','sub_title6','sub_price2','sub_price3','sub_title5','sub_title4','sub_title01','sub_title9');

のようにして

#debug $buf .= $data[$i];
next;
}
if ($flag{sub_title6} && $pos{sub_title6} == $i) {
$entry->sub_title6($data[$i]);
以下略

の追記をしたのですが、これは可能なんでしょうか。

※自作フィールド以外の値はインポートできました。

[18] Posted by sudoh : December 20, 2009 1:21 PM

sudohさん、なかなかレスが付かないようなので横から失礼します。
以前あったコメントとは私が質問したコメントなのでは?と思いこの場を
お借りしました。
私も最初うまくいきませんでしたが、「MTOS活用テクニック 藤本壱著」の
自作カスタムフィールドへのCSVファイルの取り込みは何とかできました。
ここで私が長々書くのはおかしいと思うので、良ければメールください。
私でお力になれればご協力します。

[19] Posted by ryui : January 12, 2010 12:25 AM

おかげさまで、カスタムフィールドのインポートができました。ただ、一部のデータのtitleに「,」が入っていて、項目がずれて入力されます。

例:1,000 など

「"1,000"」としても「"」がそのまま入力されてしまいます。

よい解決方法がありませんか?

[20] Posted by tama : January 31, 2010 4:15 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)