macのAutomatorでタブ区切りのテキストファイルをCSVファイルに変換したいです

タブ区切りのテキストファイルで受注データが取得できます。

このデータをゆうパックプリントというソフトに取りむ必要があります。



そのため、タブ区切りのテキストファイルをCSVファイルに変換したいです。

あまり良いソフトが見つからなかったため、MacのAutomatorで出来ないかと思いました。

(他に良いソフトがあればそちらを使いたいです)



Automatorで作る場合は、どのようにしたら良いでしょうか?

ドラッグか右クリックで対象のファイル変換する、といった使い方がしたいです。

可能でしょうか?


よろしくお願いします。

iMac-OTHER, OS X Mountain Lion

投稿日 2013/10/15 03:13

返信
返信: 16

2013/10/15 04:20 かしま への返信

右クリックでテキストファイルを変換 (上書き) する Automator サービスです。元テキストにカンマが含まれていないことが前提です。


なお、当方の環境は Snow Leopard なので、Lion 以降では Automator の文言が多少異なるかもしれませんので、その辺は適宜読み替えていただければと。


# Automator サービス


"サービス"は、次の選択項目を受け取ります:テキストファイル 検索対象:Finder

シェルスクリプトを実行

シェル:/bin/bash 入力の引き渡し方法:引数として

perl -i -pe 's|\t|,|g' "$@"


# スクリプトを変更しました:Hiro.S

2013/10/15 21:10 Hiro__S への返信

Hiro.Sさん

こんにちは。

ご説明ありがとうございます



ユーザがアップロードしたファイル


こんな感じでよろしいでしょうか?

保存しましたが、右クリックで表示されませんでした。




文字コードですが、UTF-8だと、Windowsで文字化けするようです。

(ゆうパックプリントはウィンドウズのソフト)

この場合、文字コードも変換するようにしたら良いのでしょうか?

よろしくお願いします。

2013/10/16 01:40 かしま への返信

先のスクリプトは [タブ] を [カンマ] に変更するだけのものです。それで良いのか、それとも下の例のようにダブルクォーテーションで括るか等々を教えていただけますか?


確認いただきたいのは下記。

・ファイルのテキストエンコーディングは CP932?

・改行コード は CRLF?

・tsv の具体的な書式 (ダブルクォーテーションで括る?、カンマ等の扱いは?)

・csv の具体的な書式 (同上)

・拡張子は元のままか csv 指定か


ーーーーー


変換例


tsv

項目1A[tab]項目1B[tab]項目1C[改行]

項目2A[tab]項目2B[tab]項目2C[改行]



csv

"項目1A","項目1B","項目1C"[改行]

"項目2A","項目2B","項目2C"[改行]

2013/10/16 18:36 Hiro__S への返信

・ファイルのテキストエンコーディングは CP932?

確認したらUTF-8でした。



・改行コード は CRLF?

Windowsで使用するのが目的なので、CRLFで良いと思います。



・tsv の具体的な書式 (ダブルクォーテーションで括る?、カンマ等の扱いは?)

カンマはなしでタブだけです。ダブルクォーテーションも無いです。



・csv の具体的な書式 (同上)

タブ無しでカンマだけ。ダブルクォーテーション無しで良いです。



・拡張子は元のままか csv 指定か

拡張子はCSVで指定します。



サービスを作って、指定のファイルを選択し、右クリックをすればサービスが出てくると思うのですが、今の所それが出てきませんので、オートメーターの作り方に問題があったのかな?と思いました。私何か間違ったんでしょうか?


ユーザがアップロードしたファイル



お手数かけますが、どうぞよろしくお願いします。

2013/10/16 22:54 かしま への返信

「次の項目を受け取ります」は「テキスト」ではなく「テキストファイル」です。この項目が Mountain Lion 版になければ、相応のものにすると動くと思います。


が、もっと本格的なスクリプトに書き換える必要がありそうなので、このスクリプトはボツにしてください。また、Automator での処理もやめた方が良いです。今後は、かしまさんがメンテナンスをすることになりますが、おそらく手に負えないと思います。


csv には一応仕様がありますが、方言も多数ありまして、汎用的な処理...ということができません。現場毎に仕様を確認しながら拵えるしかないのが現状です。


例えば、項目をダブルクォーテーションで括らないとなると、tsv にカンマが入っている場合何らかの処理が必須となります。


その処理にはいくつかバリエーションがあります。tsv には NG 文字が入らないような処理が予めなされている、csv にする際にエスケープ処理をする、さらにエスケープ処理にも方言あり、等々。「カンマ等の扱いは?」で確認して欲しかったのはこのようなことです。


NG 例

項目,1A[tab]項目1B[tab]項目1C[改行]

項目,1A,項目1B,項目1C[改行] ← 項目が増えてしまう


そんなこと最初から言ってよ...とのお叱りを受けるかもしれませんが、事故を起こす前にやめておいた方が良いと判断した次第です。本当に申し訳なく思います。

2013/10/17 18:30 かしま への返信

こんにちは。横から失礼します。


オートメーターでは難しいんですね。


いえ、誤解のなきように。 Autometerで可能です。

ただしこの場合、単純な「TAB」→「,」変換ではダメなんじゃないの? という事なのです。


つまり、、

タブ区切りのテキストファイルで受注データが取得できます。

このデータをゆうパックプリントというソフトに取りむ必要があります。

取得できるのはいいとして、、

TABをカンマに単純変換するだけでフォーマット的に整合するのでしょうか?


私が思うに・・・・

その受注データの並び順を「ゆうパックプリント」にあわせたデータ並びに変更し、

カンマ区切りでそれらのデータを並べる必要がある、、のでは?

「ゆうぱっくプリント」って、あて先プリントソフトですよね? だったらその受注データには

数字だけじゃなく、文字列も含まれてる?←UTF-8で?


受注データのデータ構造を「ゆうぱっくプリント」のデータ構造に変換する、という処理になります。

単純に「TAB」→「,」に置き換えただけでOKとは思えません。


Hiro.Sさんの「事故を起こす前にやめておいた方が良い」という判断は

まさにそのとおりだと思いますよ。


ではでは。

2013/10/17 18:49 亀どん への返信

亀どんさん


こんにちは。

そういうことですか。なるほどです。

ゆうパックプリントですが、予測の通りあて先プリントソフトですが、文字列も含まれます。←UTF-8で


受注データのデータ構造を「ゆうぱっくプリント」のデータ構造に変換する、という処理は、ゆうパックプリントの方で処理が出来ますので、毎回変換の度に順番がバラバラにならない限り大丈夫です。


なので、個人的には「TAB」→「,」に置き換えただけで良いのかと思ってます。

ただ、私が基本的に知識不足のようなので、やってみないとわからん。といった感じではあります。

2013/10/17 20:02 かしま への返信

こんにちは。


やってみないとわからん。といった感じではあります。

まずはテキストエディタで開いて「置換」機能を使って、TAB→, 変換をしてcsvで別保存してみては?


それを読み込んでみて、それでOK,十分、というのであれば、、そのときはAutometorで、という話になります。


ではでは。

2013/10/17 21:34 やすどん への返信

やすどんさん

ありがとうございます。



早速やってみた所、タブ→, 全置換で全く問題がありませんでした。

という事はAutometerで可能という事でよろしいでしょうか?

そうるすと、最初にHiro.Sさんが提案してくれたAutometerで出来る!ということですよね^^




ユーザがアップロードしたファイル


で、これが動作しない件なんですが、ライオンの場合はテキストファイルという項目が無いのですが、テキスト、リッチテキストとならんでますので、テキストを選択で良いのかと思います。が、右クリックでサービスが出現しません。なにがマズかったでしょうか?






ちなみに、このサービスが動いてます。

ユーザがアップロードしたファイル

2013/10/17 22:01 かしま への返信

こんにちは。


今Macがない(笑)ので、とりあえず、ですが。


テキスト ではなく、、、、すべての書類、、、とかにしてみては?

(そのtsvがTEXT属性かどうか、ちょっとわかんないし。)


テキスト、、では、選択したテキスト部分が対象になってしまいますので。


ちなみにそのScriptは元の***.tsvを変換してそのまま上書きします。(たぶん)

なので、コピーを作って変換実行してください。 また、拡張子は自分でcsvに変更しないといけません。


ではでは。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

macのAutomatorでタブ区切りのテキストファイルをCSVファイルに変換したいです

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。