質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Automator

Automatorは、作業を自動化するワークフロー構築ソフトウェア。Macに標準で搭載されています。ドラッグ&ドロップ操作で自動化レシピを作成。任意のショートカットキーで実行することが可能です。

Q&A

解決済

2回答

2332閲覧

複数txtの結合について

0000a

総合スコア18

Automator

Automatorは、作業を自動化するワークフロー構築ソフトウェア。Macに標準で搭載されています。ドラッグ&ドロップ操作で自動化レシピを作成。任意のショートカットキーで実行することが可能です。

0グッド

1クリップ

投稿2021/08/12 14:30

編集2021/08/12 15:48

複数あるtxtファイルを結合したいです。

指定されたFinder項目を取得
テキストファイルを結合
新規テキストファイル

の順に並べているのですが、

アクション“テキストファイルを結合”でエラーが起きました: “テキストエンコーディング“Unicode(UTF-8)”でファイル“fr4総勘定元帳.txt”を開けませんでした。”

テキストエンコーディング“Unicode(UTF-8)”でファイル“fr4総勘定元帳.txt”を開けませんでした。 このファイルは、別のテキストエンコーディングで保存されているか、テキストファイルでない可能性があります。

というコメントがでてきてしまいます。どのように対処すれば良いかご教示いただけますでしょうか?どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

etherbeg

2021/08/13 12:59

複数あるtxtファイルのうちのひとつが「fr4総勘定元帳.txt」ということで間違いないでしょうか。 文字コードの問題かもしれませんので、ファイルの現物が手元にあれば調べてみることは可能ですが、それをこういった場所で人に指示してさせるのは難しいです。ツールや前提知識も必要ですし、仮説を立てながら試行錯誤していくプロセスなので…。 「fr4総勘定元帳.txt」というファイル名から想像するのですが、元はWindowsで作成されたファイルではないでしょうか? もしそうであるなら、そのことが問題に関係しているかもしれません。
0000a

2021/08/14 02:18

ご回答くださりありがとうございます はい合体したいファイルの一つがこれになります(これが表示されたのは先頭のファイルだからだと存じます) 元がwindows作成のデータで私がmac仕様だと難しいのでしょうか?この辺りの知見が全くなくネットで調べても判明せず、、可能でしたら、ご教示のほどよろしくお願い致します。
guest

回答2

0

ベストアンサー

イメージ説明

  1. 「指定されたFinder項目を取得」の後に「シェルスクリプトを実行」を配置します
  2. 「シェル:」で「/usr/bin/python」を選びます
  3. 「入力の引き渡し方法」で「引数として」を選びます
  4. コマンドウィンドウに以下のように入力します

python

1import os 2import sys 3 4merged_text = "" 5for file in sys.argv[1:]: 6 with open(file) as f: 7 merged_text += f.read().decode('cp932') 8 9merged_filename = "結合テキスト.txt" 10dirname = os.path.dirname(sys.argv[1]) 11with open(os.path.join(dirname, merged_filename), "w") as f: 12 f.write(merged_text.encode('utf-8'))
  • 結合結果のファイル名は、ここでは「結合テキスト.txt」としていますが、変更可能です
  • 結合結果ファイルの保存場所は、ここでは読み込み対象ファイルと同じディレクトリとしていますが、変更可能です
  • 結合結果ファイルの文字エンコーディングは、ここでは「UTF-8」としていますが、読み込み対象ファイルと同じエンコーディングで保存することも可能です(結合結果ファイルをMacでしか使わないのならUTF-8でいいと思います。Windowsに戻して使うのなら元のファイルのエンコーディングに合わせておいたほうがいいかもしれません)

投稿2021/08/16 05:43

編集2021/08/16 05:48
etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0000a

2021/08/17 00:07

ありがとうございます。いただいたコードですとデータの合体はできておりますが、文字化けしてしまいますのでその対応策をご教示いただけますでしょうか? やはりシェルスクリプトでコードが必要なのでしょうか?(今回はtxtですが、エクセルデータの場合でも同様のことがしたいため。) お手数ですがどうぞよろしくお願い致します。
etherbeg

2021/08/17 10:41

あれ、文字化けしたんですか。予想と違う結果だなあ…。 読み込むファイルは複数あると思うのですが、全部出所は同じファイルですか? それとも別々のソフトウェアから出力されたものですか? 全部出所は同じと思っていたのですが、別々のソフトウェアからだったら、ファイルごとにエンコーディングが違うとかもあるのかなと思いました。 f.write(merged_text.encode('utf-8')) のところを f.write(merged_text.encode('cp932')) や f.write(merged_text.encode('shift-jis')) にしても同じですか? やはり文字化けするようなら、ファイルを開くところからエンコーディングが間違っているのかなあ…。 > やはりシェルスクリプトでコードが必要なのでしょうか?(今回はtxtですが、エクセルデータの場合でも同様のことがしたいため。) シェルスクリプトでコードはなるべく使いたくなかったのですが、「新規テキストファイル」のエンコーディングが限られていたので仕方なく… スクリプトを使えばエクセルファイルの結合もできますが、Automatorだけで完結するのは難しいと思います。他にプログラミングの環境を構築したりとか、ライブラリをインストールしたりとか、Automatorとは別にプログラムファイルを用意しておくとか、そういったことが必要になると思います。 (Automatorにはエクセルを結合するアクションはなかったですよね?)
0000a

2021/08/18 01:53

f.write(merged_text.encode('cp932')) にすると文字化けせず結合できました。 エクセル結合のアクションはないようで、macのアプリだからか、エクセルの結合は難しいんですね。 会計のアプリを作成したいところなので、色々と勉強にもなりました。ありがとうございます。
etherbeg

2021/08/18 11:32

できましたか!よかったです。正直言ってほとんど心が折れかかってたところでした…。 cp932で保存すると、文字化けせず保存できたとしても、今度はテキストエディットで開けないのではないかと心配していました。 何も書かれていないので、テキストエディットでも開けたか、開けなかったけどエクセルでちゃんと結合されていることが確認できたのでしょうね。 これを書いてて思い出したのですが、MacにはAppleScriptというものがあって、Mac版のExcelはAppleScriptに対応していて、AutomatorからAppleScriptを実行できるので、もしかしたらAutomatorから自動でExcelのファイルを結合することもできるかもしれません。 でもできたとしても、テキストを結合する場合と違って、いったんExcelが起動したり、ファイルが開いたりするのではないかと思います。やったことがないので分からないのですが…。
etherbeg

2021/08/18 11:37

もしこれで解決でよろしければ、質問のステータスを「受付中」から「解決済」に変更しておいてください。
0000a

2021/08/18 23:16

applescriptご案内ありがとうございます 自分の方でも調べてみます、 この度は色々とありがとうございました。助かりました
guest

0

「fr4総勘定元帳.txt」というファイル名から、元々Windowsで作成されたファイルではないかと想像したことからの思いつきなのですが、「新規テキストファイル」アクションのエンコーディングで、「日本語 (Shift JIS)」を選択して一度試してみてはいかがでしょうか。

投稿2021/08/13 14:27

etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0000a

2021/08/14 02:16

ご回答くださりありががとうございます。ご案内いただいたものでやってみたところ、こんな感じのものが出てきましたが、(***は伏字)データの内容を結合することはできませんでしょうか?おそらく元々はwindows作成ファイルかと思います。 /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt
etherbeg

2021/08/14 04:07

こんな感じのものが出てきたとは、この3行の文字列がどこかに表示されたということでしょうか? どこに表示されたのでしょうか? 私としては、新規テキストファイルの保存に成功するか、それともやはり同じようにエラーが出て失敗するか、どちらかかなあと思っていたのですが。
0000a

2021/08/14 05:39

(***などは私のuserIDなどの個人情報なので伏せたまでです。) automatorを回すと、一応成功してtxtファイルが生成されるのですが、中を開けると、このようにそれぞれのtxtファイルの場所を結合したデータが作成されているようなのです
etherbeg

2021/08/14 10:28

うーん、それはおかしいですね。 私の環境では、 - 指定されたFinder項目を取得 - 新規テキストファイル とアクションをふたつだけ並べて実行すると、そのように「指定されたFinder項目を取得」で指定されたファイルのフルパスが、新規テキストファイルに書き込まれます。 質問者さんのAutomatorでは、アクションは - 指定されたFinder項目を取得 - テキストファイルを結合 - 新規テキストファイル と間違いなく3つ並んでいるのですよね?
0000a

2021/08/15 02:36

3つの並びはこちらで間違いありません。 指定されたFinder項目を取得ではファイルの場所を示しているようなので、これがまちがっているのでしょうか?いずれにしろ自動でtxtファイルを開けないことが問題のような気がしております。エンコーディング?これが、素人なのでよくわからず、どう設定すれば良いのかご教示いただけると助かります
etherbeg

2021/08/15 03:22

「こんな感じのものが出てきました」の内容である /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt /Users/***/Desktop/04.総勘定元帳/***総勘定元帳.txt は、「指定されたFinder項目を取得」で指定された3つのファイルのフルパスが並んでいると思っていたのですが、よくみたら3行とも同じファイル名なので、同じファイルのフルパスが3つ並んでいたのでしょうか? --- > 指定されたFinder項目を取得ではファイルの場所を示しているようなので、これがまちがっているのでしょうか? 私も Automator で - 指定されたFinder項目を取得 - テキストファイルを結合 - 新規テキストファイル の3つを並べて試してみていますが、私の環境ではちゃんとテキストファイルの結合ができていますので、間違っているということはないと思います。 --- さて、ますます状況がよく分からなくなってきたので、初歩に戻って、本当なら最初に確認すべきだったことを確認していただきたいのですが、 「アクション“テキストファイルを結合”でエラーが起きました: “テキストエンコーディング“Unicode(UTF-8)”でファイル“fr4総勘定元帳.txt”を開けませんでした。” テキストエンコーディング“Unicode(UTF-8)”でファイル“fr4総勘定元帳.txt”を開けませんでした。 このファイルは、別のテキストエンコーディングで保存されているか、テキストファイルでない可能性があります。」 とのエラーが出るときに、「指定されたFinder項目を取得」で指定しているファイルをすべて、ひとつひとつ、(Macに最初から付属している)テキストエディット.appで開いてみて、エラーが出ることなくちゃんと開けるかどうか、そして開いたあとに、中に書いてある文字列をちゃんと読むことができるかどうかを確認していただいて、結果を教えていただきたいです。
0000a

2021/08/15 09:51

ご返信、ありがとうございます 前段ですが、別のファイルですので***は具体的にはそれぞれのファイル名ですので別の文字になっています。 後段ですが、おっしゃる通り このアプリケーションで開く>テキストエディット(デフォルト) こうやって開こうとすると開けません。ただエクセルで開こうとするとCSVのような感じで開けます、状況はこんな感じです どうぞよろしくお願い致します
etherbeg

2021/08/15 12:28

エクセルだと開けるんですか。エクセルってMacのエクセルですよね。これまた興味深いですね。 最終的に解決に至るかどうかわかりませんが、まだもう少し調査に付き合っていただくことは可能ですか? 次はテキストエディットの設定でエンコーディングの設定を追加しながら、同じようにテキストエディットでファイルが開けないかどうかを試していただきたいのです。 【やり方】 ①テキストエディットを起動します。ファイルを選択するウィンドウが表示されたら、「キャンセル」をクリックして閉じておいてください ②メニューバーから「テキストエディット > 環境設定...」と選んでください ③表示されたウィンドウのタブで「開く/保存」をクリックして選択してください(最初は「新規書類」が選択されていると思います) ④「標準テキストファイルのエンコーディング」の「ファイルを開くとき:」の横のプルダウンメニュー(最初は「自動」が選択されていると思います)をクリックして、表示された選択肢の中から、一番下の「エンコーディングリストをカスタマイズ...」を選んでください ⑤表示されたウィンドウのエンコーディングリストを下にスクロールして、「日本語 (xxx)」というエンコーディングが並んでいるところを見つけてください。最初は「日本語 (Mac OS)」と「日本語 (Shift JIS)」にだけ、左のチェック欄にチェックが入っていると思います ⑥「日本語 (Windows, DOS)」の左のチェック欄にチェックが入れてください ⑦Finderで、結合するファイルを表示して、右クリックから「このアプリケーションで開く>テキストエディット(デフォルト)」と選んで、開けるかどうか試してください ⑧開けなかったら、⑥に戻って、次の「日本語 (xxx)」にチェックを入れて、再度⑦を試してください。これをエンコーディングごとにひとつひとつ試してください ⑨開けたら、その直前にチェックを入れた「日本語 (xxx)」が何だったか、教えてください ⑩すべての「日本語 (xxx)」にチェックを入れ終わっても開けなかったら、「すべてを選択」をクリックして、すべてのエンコーディングにチェックを入れてから、再度⑦を試して結果を教えてください 以上です。
0000a

2021/08/15 23:50

⑥の「日本語 (Windows, DOS)」でテキスト自体はひらけたました。ただautomator のライブラリ>新規テキストファイル のエンコーディングではこれが選べないようです。 日本語(Mac OS) 日本語(Shift JIS)は選べますが、やはり各ファイルの位置を結合したものが生成されてしまいます。 どうぞよろしくお願い致します。
etherbeg

2021/08/16 05:46

新しく回答を追加したので試してみていただけますでしょうか。
etherbeg

2021/08/16 10:45

エラーが出るかもしれませんが、エラーが出たらまたその内容を教えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問