年度末でへろへろしているところに新年度の準備がががというわけで、Googleカレンダーやグループウェアのカレンダーの準備をしてたりします。
で、
- Googleカレンダーに自組織の来年度の予定を突っ込んでエクスポート
- エクスポートしたhoge.icsファイルを手元のThunderbird+Lightningに突っ込む
- さらにhoge.csvにエクスポート
- hoge.csvを編集してグループウェアのカレンダー用に加工して突っ込む
とりあえずThunderbirdとLightningを最新版にバージョンアップして何度か試してみましたが、やっぱり化ける。見事に化ける。どうしても化ける。ICSやHTML形式では化けないので、CSV形式でエクスポートした時固有の問題ぽい(日本語使っていなければ問題ないのかも)。
ちょっと調べてみると昔から文字化けしているみたいで、
こんなのを発見したので、手元のLightning 1.3に適用してみました。
修正するファイルは手元のWindows7だと
C:\Users\ユーザー名\AppData\Roaming\Thunderbird\Profiles\適当なフォルダ\
extensions\{e2fda1a4-762b-4020-b5ad-a41df1933103}\calendar-js\calOutlookCSVImportExport.js
です。
555行目からの
str = line.join(',') + exportLineEnding;
aStream.write(str, str.length);
これを str = line.join(',') + exportLineEnding;
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "Shift_JIS";
var strOctets = converter.ConvertFromUnicode(str);
strOctets += converter.Finish();
aStream.write(strOctets, strOctets.length);
こんな感じで。
ついでに、「2012年4月1日」が「04/01/12」とエクスポートされるため、Excelが勝手に日付型に変換して2004年1月12日などとするのにも対処してみた。
といっても、64行目の
ファイル形式はShift JISのLFだったので、なんか適当なエディタでいじってください。UTF-8NのLFとかしたらエクスポートダイアログでファイル形式選べなかったりしたのでご注意を。
といっても、64行目の
dateFormat : "%m/%d/%y",これを
dateFormat : "%Y/%m/%d",こうしただけ。
ファイル形式はShift JISのLFだったので、なんか適当なエディタでいじってください。UTF-8NのLFとかしたらエクスポートダイアログでファイル形式選べなかったりしたのでご注意を。