Automatorの失敗の原因とは?

このQ&Aのポイント
  • Mac購入からまだ日が浅く、Automatorの勉強も始めたばかりですが、特定の処理をAutomatorのカレンダーアラームに登録する際、問題なく処理を完了する場合と、途中で失敗する場合があります。
  • 具体的には以下の順番で処理を行っています: 1.「シェルスクリプトを実行」で特定のファイルを検索 2.「Finder項目をコピー」でファイルを指定のフォルダにコピー 3.「変数の値を設定」でファイルのパスを扱うために設定 4.「AppleScriptを実行」 a. ファイルのパスからファイル名を抽出 b. FileMakerの特定のフィールドにファイル名をセット c. ファイルの解凍
  • エラーが発生する原因はよく分かっていませんが、失敗した場合は「スクリプトを確認してください」というメッセージが表示されます。特にb.の部分で処理が停止しているようです。FileMakerのウィンドウも確認しており、エラーの原因がわかりません。詳しい情報があれば教えてください。
回答を見る
  • ベストアンサー

Automatorが失敗する原因

お世話になります。 Mac購入からまだ日が浅く、Automatorの勉強も始めたばかりですが、下記の処理をAutomatorのカレンダーアラームに登録をして、問題なく処理を完了する場合と、途中で失敗する場合があります。 Macそのものの環境は同じだと思いますので、スクリプトの書き方などに問題があるのではないかと思っています。 処理の順番は、以下の通りです。 1.「シェルスクリプトを実行」 ファイル名が日付で毎日変動するファイルを検索 2.「Finder項目をコピー」 特定のフォルダにコピーをして 3.「変数の値を設定」 ファイルのパスを扱うために設定 4.「AppleScriptを実行」       a. ファイルのパスからファイル名を抽出      b. FileMakerの特定のフィールドにその値をセット      c. ファイルの解凍 今はエラーを再現できないのですが、本日2回ほど失敗した時は1~3までの工程は問題なかったようで、ファイルのコピーまではできていました。 エラーの内容はうろ覚えですが、「スクリプトを確認して下さい」のような文言だったと思います。 4.の「AppleScriptを実行」のa.に関してはダイアログなどを出していないのでできているのか不明ですが、b.の部分はできていなかったので、恐らく、b.のところで止まってしまったように思います。 事前にFileMakerのウインドウが前面に来るようにはしてあるのですが・・・。 漠然とした相談で申し訳ありませんが、何かご存知でしたら教えて下さい。 宜しくお願い致します。

  • Mac
  • 回答数9
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.9

おはようございます。 ほぼ出来たような感じですね。 >今は苦肉の策でAutomatorのAppleScriptから解凍したフォルダ名をFileMakerのテーブルに投げて、そのフォルダ名を元にFileMakerがcsvファイルを探してインポートをしています。 >Automatorから解凍フォルダの一覧をテキストファイルに書き出してはみたものの、それをFileMakerに取り込むことができなかったので、そのままフォルダ名を投げるやり方のままです。 csvファイルはインポートできているが、 インポートしたファイルが入っていたフォルダ名はFilemakerに登録できていないというのでしょうか? インポートするファイルを探すのが手こずっているのでしたら、決まった場所(決まったファイル名)にコピーしてインポートする方法もあります。Filemakerから見ていつも同じファイルをインポートすればよいので楽になるような気もします。 これとは別に 少し気になっていることですが、15時台にできたcsvファイルはその日うちに取り込まないと自動では取り込めなくなりますよね。 今後取り込むファイルも増えてきそうなので、取り込まれたファイルを記録しておいて、取り込まれていないファイル(複数あってもよい)を見つけてそれを読み込むことにしてはいかがでしょうか? やり方は、 Filemakerに読み込まれたフォルダ名が登録されているのでそれを利用する方法も有るし、 csvファイルで読み込まれたものをバックアップも兼ねて保存しておき、それをもとに保存していないファイルを判断して、あれば取り込むという方法などがあります。 後者の方法は意外と簡単です。 次の段階に考えるというのでも良いとは思います。

maokongreen
質問者

お礼

お世話になっております。 いつもありがとうございます。 > csvファイルはインポートできているが、 インポートしたファイルが入っていたフォルダ名はFilemakerに登録できていないというのでしょうか? 一応、フォルダ名もFileMakerに登録できています。 取り込んだ日時もフォルダ名と一緒にテーブルで保存しています。 > インポートするファイルを探すのが手こずっているのでしたら、決まった場所(決まったファイル名)にコピーしてインポートする方法もあります。Filemakerから見ていつも同じファイルをインポートすればよいので楽になるような気もします。 ああああああ、すみません!! 説明が下手なので誤解を生むような書き方になってしまったようです。申し訳ありませんm(_ _)m インポートするファイルを探すのは、別の質問でki073様に教えていただいたシェルスクリプトでばっちりです。 一連の処理をAutomatorのカレンダーアラームで実行した時に、何度かエラーが起きたので、その原因が、AppleScriptからフォルダ名をFileMakerに引き渡している部分なのかも?と思って、こちらで相談させていただいたんです。 その部分に変わる処理が、「テキストファイルにフォルダ名を書き出して、FileMakerにインポートする」という流れなのだと勘違いをしており、テキストファイルの内容をFileMakerに取り込むことができなかったので、しつこくこちらで相談を引き延ばしてしまった次第です。 現状で一応、フォルダ名も登録できていますし、AppleScriptの処理(記述)に問題はなさそうとのご助言もいただけましたので、このまま先に進もうと思います。 最初のころに出ていたエラーも今は再現しませんので、大丈夫だと思います。 とんだ思い込みからki073様まで巻き込んでご親切なご指導を賜りまして、申し訳ありませんでした。 ご面倒をお掛けしてしまい、お詫びの言葉も見つかりませんが、とても勉強になりました。 ありがとうございます。 今後の方針もご提案いただき、本当に感謝しております。 そういったところも追々、詰めていかなければと思います。 また、壁にぶち当たった時は相談させて下さい。 長々引っ張ってしまいましたが、これにて解決とさせていただきます。 本当にありがとうございましたm(_ _)m

その他の回答 (8)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.8

No.7の補足欄拝見しました。外出していて遅くなってすみません。 全体像がほぼ分かりました。 ●圧縮ファイルを解凍すると複数個のcsvファイルが保存されています ●DBに取り込むcsvファイルはそのうちの1個だけです の中で、そのうちの1個をどのように決めるのでしょうか、ファイル名で可能なら、それだけ残せば良いのですよね。 内容を見ないと決められなくれも、判断できる基準がはっきりしていれば難しくはありません。 (ここの情報をもう少しください) ファイルが特定できれば、Filemakerにインポートするだけです。

maokongreen
質問者

補足

おはようございます。 私の飲み込みが悪いばかりに、長々お付き合い下さって本当にありがとうございます&すみませんm(_ _)m 解凍したフォルダの中に複数個のcsvが入っていますが、DBに取り込むcsvは1つだけで、ファイル名が固定されています。 このファイル名は変わることなく、取り込まないその他のcsvも名前は固定です。 > ファイルが特定できれば、Filemakerにインポートするだけです。 今は苦肉の策でAutomatorのAppleScriptから解凍したフォルダ名をFileMakerのテーブルに投げて、そのフォルダ名を元にFileMakerがcsvファイルを探してインポートをしています。 他に良い案があればご教示宜しくお願い致します。 Automatorから解凍フォルダの一覧をテキストファイルに書き出してはみたものの、それをFileMakerに取り込むことができなかったので、そのままフォルダ名を投げるやり方のままです。 甘えてばかりで心苦しいのですが、引き続きご指導いただけますようお願い申し上げます。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.7

No.6の補足欄了解しました。勘違いで良かってです。 もうすこし整理して考えましょうか。 フォルダ名の登録ではなく、csvファイルの内容を登録することが大事なような気がしているのですが、どうなんでしょか? csv形式になっていることしか分からないのですが、どのような管理をされるのですか? 例えば、全部のデータをデータベースに取っておくのか(この時にはいつのデータかの情報をもっていないといけないような) あるいは、最新のデータだけでよいのか。 内容をデータベースに登録しなくても、その都度ファイルから読み出せばよいのならファイル名だけ登録すれば良いので一番楽なような気もするのですが。

maokongreen
質問者

補足

ki073様 ありがとうございますm(_ _)m 出来が悪くて本当にすみません。 > フォルダ名の登録ではなく、csvファイルの内容を登録することが大事なような気がしているのですが、どうなんでしょか? はい、おっしゃる通りです。 文章が下手なので箇条書きにしてみます。 ●共有フォルダの中に目的の圧縮ファイルがあります ●共有フォルダの中には同じ年月日で時間違いの圧縮ファイルや、その他の形式の不要なファイルも混在しています ●目的の圧縮フォルダの名前はyymmdd15*.lzhで、年月日時分秒の部分が変動します ●目的の圧縮ファイルは、その日の15時台のものです ●将来的に15時台だけでなく、ほかの時間帯のものも取り込む可能性があります ●圧縮ファイルを解凍すると複数個のcsvファイルが保存されています ●DBに取り込むcsvファイルはそのうちの1個だけです ●解凍したフォルダ名をDBに登録する理由は、その日の15時台のcsvファイルを探すためだけに利用しています ●取り込むcsvの内容は全レコードをテーブルにインポートしています ●csvには受注日という項目があるので、いつのデータかは把握できます ●csvの内容は受注データなので、全レコードをインポートして集計表などを作っています ●インポート済みの圧縮ファイルやcsvファイルは重要視していません(一応、共有フォルダの方では圧縮フォルダを全て保存し、バックアップも取っています) 最初に状況などを端折ってしまったために、非常にややこしくなってしまい、申し訳ありません。 長々お付き合いいただいて本当に恐縮ですm(_ _)m 厚かましいお願いですが、ご負担にならない程度でもう少しの間ご指導いただけますようお願い致します。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.6

No.4のお礼欄について、 ------# FileMakerの「Fname」というフィールドに フォルダ名をセット tell application "FileMaker Pro Advanced" activate set cell "Fname" of current record to Fname as string end tell のやっていることはフォルダ名をデータベースに登録しているのですよね?? そうでしたら、それでよいはずですが。 No.4の補足欄にある >このテキストファイルからフォルダ名をインポートしておけば、AppleScriptからフォルダ名をセットしに行くという処理が不要になるということですよね? この意味が分からなかったのですが、この部分で暴走しているのでしょうか?? それとも、csvファイルを読み込むところで暴走するのでしょうか? ファイルが出来ているのでしたら、Filemakerをマウスで操作して読み込んでみてはいかがでしょうか。

maokongreen
質問者

補足

申し訳ありません、暴走したのは私自身でスクリプトではないんです。 紛らわしいことを書いて本当にすみません(恥) AppleScriptからフォルダ名をセットする工程が不安定な動きの原因かもしれないので、Automatorからフォルダ名をテキストファイルに書き出して、それをFileMakerから探して、目的のcsvファイルのインポートするのがよい、と解釈して突っ走ってしまったのです。 そして、Automatorから解凍したフォルダ名をテキストファイルに書き出したのですが、FileMakerのテーブルにそのテキストファイルをインポートすることができませんでした。 テキストファイルに書き出した解凍フォルダ名の一覧をFileMakerのデータベースにインポートはできないのですね。 解凍したフォルダ名のデータベースへの登録は、目的のcsvファイルを検索するための条件でしかなく、ちゃんと管理していくようなデータでもないのです。 なんだか頭が混乱してしまって申し訳ありません。。。 AutomatorのAppleScriptからフォルダ名をデータベースに登録する部分はそのままで構わない、ということでよろしいですよね? 飲み込みが悪くて本当に恐縮です・・・m(_ _)m

  • ki073
  • ベストアンサー率77% (491/634)
回答No.5

ファイル名を出力するスクリプトを書いてみました。 拡張子が無い方が使いやすいかなと思ってbasenameで.lzhを取り除いています。何かきれいじゃないなあと思ってますが、取りあえず動くものを。 Today=`date +%y%m%d` FileName=`ls /Volumes/xxxx/${Today}15*` FileBaseName=`basename ${FileName} .lzh` echo ${FileBaseName} >filename.txt OSX 10.9のAutomatorの「シェルスクリプトを実行」はちょっと変な挙動がありますねえ。 初期状態ではダブルクォーテーションとシングルクォーテーションに「スマート引用符」機能があって勝手に書き変わりエラーが出てしまいます。最初は気がつかなくてエラー出まくりでした。右クリックで自動置換/スマート引用符を切っておけば良いのですが、いちいちやらないといけないようです。クォーテーションを入れる時には注意してください。 私自身のAutomatorの使い方ですが、 簡単なものはアクション使い、 複雑なものは「シェルスクリプトを実行」を使いますが、bashだけではなくrubyなどでも書けますので、どうしてもrubyに偏っています。 AppleScriptは癖が有るため、どうしても使わざるを得ないとき以外はrubyなどでということになっています。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.4

だいぶ理解できてきました。 ちょっと気になるところですが、 No.1の補足欄の ------# FileMakerの「Fname」というフィールドに フォルダ名をセット tell application "FileMaker Pro Advanced" activate set cell "Fname" of current record to Fname as string end tell と >FileMakerの起動時にフォルダ名をセットするフィールドが空欄でなければ、新規レコードを追加するようにしてあります。 から、サーバーに新しいファイルができているのなら、フォルダ名(ファイル名?)を登録するようですが、 No.3でchieffishさんが書いている様に、インポート機能を使えば簡単にできます。 この場合はフォルダ名を書いたテキストファイルを作らないと駄目ですが、簡単に作れます。 もう一つ、ここでは書かれていないように思いますが、 解凍したcsvファイルに書かれた内容もFileMakerに取り込んでいるのですよね? その場合もインポート機能を使えば簡単にできます。(読み込むために加工する必要あっても難しくないと思います)

maokongreen
質問者

お礼

お世話になります。 午前中にAutomatorでフォルダ名をテキストファイルに書き出すことができて舞い上がっていましたが、そのテキストファイルの内容をFileMakerでは読み込むことができず撃沈でした。 なんか暴走してしまったみたいで。。。 すみません。。。 テキストファイルにフォルダ名を書き出す、という意味ではなかったということですよね? もう一度ご説明いただいてもよろしいでしょうか? 何度も本当に申し訳ありませんm(_ _)m 宜しくお願い致しますm(_ _)m

maokongreen
質問者

補足

ki073様 おはようございます。 相談を気にかけて下さって本当にありがとうございますm(_ _)m > から、サーバーに新しいファイルができているのなら、フォルダ名(ファイル名?)を登録するようですが、 No.3でchieffishさんが書いている様に、インポート機能を使えば簡単にできます。 この場合はフォルダ名を書いたテキストファイルを作らないと駄目ですが、簡単に作れます。 ⇒ はい、新しい解凍フォルダができると、そのフォルダ名をFileMakerに登録をして、そのフォルダ名を頼りにcsvファイルを取り込みに行っています。 以前、FileMakerの「ファイル」メニューから「レコードのインポート」→「フォルダ」で試したところ、「指定されたフォルダには、指定されたファイルタイプのファイルが見つかりませんでした」というエラーでした。 知識がないため、理解が悪くてお恥ずかしいのですが、 「この場合はフォルダ名を書いたテキストファイルを作らないと駄目ですが、簡単に作れます。」 こちらのお言葉でやっと理解できたように思います。 Automatorでフォルダ名を書いたテキストファイルが作れました! こんなこともできるなんて・・・! ki073様とchieffish様のアドバイスは、このテキストファイルからフォルダ名をインポートしておけば、AppleScriptからフォルダ名をセットしに行くという処理が不要になるということですよね? わーお!すごいです!!! 私には到底思い浮かばないです・・・。 このテキストファイルを作る部分を、シェルスクリプトで圧縮フォルダを探す処理から始まるワークフローに追加しても大丈夫ですか? まだAutomatorのことも勉強が足りないのですが、なるべく1つのワークフローにまとめた方がよいですか? それとも、小分けにしてメンテナンスしやすくした方がよいですか? それと、csvファイルはFileMakerの「レコードのインポート」でこちらは問題なくできていると思います。 今からテキストファイルの方法で一通りの流れを試してみます。 なかなか相談を「終了」できずに申し訳ありません。 もうゴールは見えていると思いますので、あとちょっとだけお付き合いいただけますようお願いいたしますm(_ _)m

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.3

FM板の方でも質問されてた方ですよね。 AutoMatorのフォルダアクションが使えたら少し簡単かも知れない。 フォルダアクションは共有フォルダに新しいファイルが追加された場合 それをクライアントPCのフォルダにコピーしたりできる機能です。 入るファイルがテキストファイルなら、FMのフォルダテキスト一括イン ポートでFMのテーブルにファイル名も同時に取り込めますから、FM内 で不要なファイル(日付が違う?)のデータは削除すればいいですし。

maokongreen
質問者

補足

chieffish様 その節は大変お世話になりました。 こちらでも相談にのっていただきましてありがとうございます。 > フォルダアクションは共有フォルダに新しいファイルが追加された場合 それをクライアントPCのフォルダにコピーしたりできる機能です。 ⇒ 共有フォルダには1日に何度かファイルが追加されます。 必要とするファイルが限られているので、追加されたファイルの全てのコピーは要らないのですが、必要なファイルを選別するための条件は設定できないですよね。 > 入るファイルがテキストファイルなら、FMのフォルダテキスト一括イン ポートでFMのテーブルにファイル名も同時に取り込めますから、FM内 で不要なファイル(日付が違う?)のデータは削除すればいいですし。 ⇒ FileMakerに取り込みたいファイルは、共有フォルダでは圧縮ファイルになっています(lzh) そのlzhフォルダをMacにコピーしてから解凍して、解凍フォルダの中の必要なcsvファイルをFileMakerが取り込んでいます。 共有フォルダの中をフォルダインポートで試してみたのですが、テキストや画像ではなく、フォルダ単位だからかインポートできませんでした。 説明も下手で、ややこしくてすみませんm(_ _)m

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

スクリプトを見る限りエラーになりそうには思いませんが、 delayを入れるとするとactivateの後でしょうか。 私なりに理解した範囲では 毎日15時台にlzhで圧縮されたファイルがサーバーに作成され、それをデータベース化したい。 ということでしょうか? ちょっと質問ですが 1) サーバーに作成されたファイルはそのうち消されてしますのでしょうか。毎日データベースに登録する必要があるのでしょうか? 2) 解凍したファイルはどのように保存されているのでしょうか?Filemakerに内容を書き込み捨ててしまうのか、ファイルの状態で保存しておき必要なときに使うのでしょうか? こんな方法はいかがでしょうか どっちみちFilemakerに保存して使うのであれば、Filemakerを起動したときに起動スクリプトで登録し、カレンダーイベントとしては実行しない。というのでは??

maokongreen
質問者

補足

ki073様 ありがとうございます。 お礼が遅くなってすみません。 今日は何度か試してみましたが、エラーは起きませんでした。 教えていただいたdelayも試してみて、エラーは起きませんでした。ありがとうございます。 > 毎日15時台にlzhで圧縮されたファイルがサーバーに作成され、それをデータベース化したい。 ということでしょうか? はい、おっしゃる通りです。 1) サーバーに作成されたファイルはそのうち消されてしますのでしょうか。毎日データベースに登録する必要があるのでしょうか? 2) 解凍したファイルはどのように保存されているのでしょうか?Filemakerに内容を書き込み捨ててしまうのか、ファイルの状態で保存しておき必要なときに使うのでしょうか? ⇒ Windowsの共有ファイルに作成されるlzhファイルをMacにコピーして、そこからFileMakerに取り込みます。 共有ファイル内のlzhファイルは削除せず、残していきます。 Macにコピーしたlzhは削除して、解凍したフォルダは残していく予定です。 データベースへの登録は毎日行います。 ほぼ例外なく毎日登録するデータがあります。 > どっちみちFilemakerに保存して使うのであれば、Filemakerを起動したときに起動スクリプトで登録し、カレンダーイベントとしては実行しない。というのでは?? すみません。 後出しになってしまいますが、今の時点ではデータベースへの取り込みが1日1回の15時台だけなのですが、近い将来、1日2回になる可能性が高いのです。 それと、FileMakerから解凍したフォルダ名をどう判断してよいのかわからなかったので、AppleScriptから引き渡すことにしただけなんです。 FileMakerの起動スクリプトで登録をするということは、FileMakerからyymmdd15*のフォルダ名を検索して、該当ファイルからデータを取り込むんですよね? FileMakerから行った方が安定しそうですね。 ちょっと今から試してみます。 ありがとうございます。 また結果をご報告させていただきます。 ご迷惑でなければ、もう少しお付き合いいただけますようお願い致しますm(_ _)m

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

おはよございます。 b. FileMakerの特定のフィールドにその値をセット はAutomatorの記録機能を使ったものか、 tell application "System Events" ~ end の様にSystem Eventsを使ったものでしょうか? その場合で、もし不安定な場合はbの前に delay 1 を加えて時間待ちしたらうまくいくかも知れません。 ただし、上の場合だとスクリプト実行中はMacの操作をするとエラーの原因になってしまします。不便です。 AppleScriptでアプリケーションを操作する方法は大きく分けて2つあります。 1つは上に書いた方法で、どちらかと言うと最後の手段です。 もう一つは AppleScriptエディタの「用語説明を開く...」であアプリケション(Filemaker)を選んだときに表示されるコマンドを、こちらはバックグラウンドで動くことが多いので便利です。 質問欄の1と2は前回の質問で理解できたのですが、その後の3,4は コピーしたファイルの一覧をFilemakerに記録し、何か別のファイルを解凍するのでしょうか? 3以降をFileMakerを起動したときに、実行するのでは不都合があるのでしょうか? その方が安定する様に思います。

maokongreen
質問者

補足

ki073様、先日は大変お世話になりありがとうございました。 今回も相談にのっていただきまして感謝感謝です。 前回、ご指導いただいた後、コピーする対象がcsvファイルからlzhの圧縮ファイルに変更になったので、コピー後に解凍することになった次第です。 FileMakerの特定のフィールドに解凍したフォルダ名を入れる部分も含め、AppleScriptは以下のように記述しました。 ---------------------------------------------------- on run {input, parameters} ------# Automatorから受け取ったファイルパスから       フォルダ名を抽出 set floderPath to input as string set fileName to text 51 thru -1 of folderPath ------# FileMakerの「Fname」というフィールドに フォルダ名をセット tell application "FileMaker Pro Advanced" activate set cell "Fname" of current record to Fname as string end tell ------# StuffIt Expanderで解凍 tell application "StuffIt Expander" expand input as alias end tell ------# lzhフォルダを削除 tell application "Finder" move input to trash end tell return input end run ----------------------------------------------------- 今回相談させていただいたAutomatorの一連の流れの前に、共有フォルダのマウントと、FileMakerの起動をしています。 FileMakerの起動時にフォルダ名をセットするフィールドが空欄でなければ、新規レコードを追加するようにしてあります。 > 質問欄の1と2は前回の質問で理解できたのですが、その後の3,4は コピーしたファイルの一覧をFilemakerに記録し、何か別のファイルを解凍するのでしょうか? FileMakerにフォルダ名を引き渡した後、FileMkaerからそのフォルダ内のcsvファイルを選択して、テーブルにデータを読み込んでいます。 FileMakerは解凍したフォルダ名が知りたいだけで、解凍自体はAppleScriptからStuffIt Expanderを使用しています。 > 3以降をFileMakerを起動したときに、実行するのでは不都合があるのでしょうか? 特に不都合はないと思います。 フォルダ名の引き渡しをしてから解凍と削除をした方がいいかな、というだけの順序です。 教えていただいた「delay 1」を今から試してみます。 長々と書いた割に説明が拙くて申し訳ありませんが、お時間がございましたら引き続きご教示いただけますようお願いいたします。

関連するQ&A

  • Automatorでファイルの移動とコピー

    Automatorのフォルダアクションを使ってファイルを2ヶ所のフォルダにコピーしたいのですが、うまくいきません。 フォルダAに保存されたPDFをフォルダBの日付フォルダ(フォルダ名:yy-mm-dd)に移動して、次にフォルダCにコピーをすることが目的です。 ネットの情報を参考にしながら下記のようなワークフローを作成しました。 AutomatorのフォルダアクションでフォルダAを指定 1. 指定されたFinder項目を取得(Automatorでのテスト用に設定) 2. フォルダの内容を取得 3. 変数の値を取得   変数名:folderA 4. AppleScriptを実行  on run {input, parameters}   set folderA to item 1 of input    -- POSIX変換   set folderA_POSIX to POSIX path of folderA   -- 移動先   set folderB to "フォルダBのパス"    -- フォルダBの中の日付名のサブフォルダ   set theTime to do shell script "date +'%y-%m-%d'"    -- フォルダB / yymmdd のパス   set yymmdd to do shell script "find " & folderB & " -name " & theTime & "* -print"   set moveCommand to "mv " & quoted form of folderA_POSIX & " " & quoted form of yymmdd   do shell script moveCommand   return input end run Finder項目をコピー      フォルダCを指定 一応、上記の流れで動いているのですが、このワークフローと同じ内容で別のフォルダ用にコピーをしたところ、「AppleScriptを実行」の結果に移動先のフォルダBのyy-mm-ddフォルダに保存されたファイルのパスが表示されず、最初のフォルダAのパスが入っていて、テストの結果のログの部分には、「アクション”Finder項目をコピー”に必要なデータがありません」とありました。 ワークフローをコピーする前のちゃんと結果を得られている方のフォルダでは、移動先のパスが結果に表示されていたので、最後の return input の値が更新されていないのかな?と想像しているのですが、どうしたら良いですか? 「Finder項目をコピー」にデータを引き渡すことができない原因はなんでしょうか? 同じスクリプトで問題なく動いているフォルダもあるのですが、違いは何でしょうか? アクセス権はいずれも同じ設定(読み書きOK)になっています。 そもそも上記のようなスクリプトで問題ないでしょうか? Macもまだ慣れず、AutomatorもAppleScriptも知識がないのでとんちんかんな質問でしたら申し訳ありませんが、ご指導よろしくお願い致します。

    • ベストアンサー
    • Mac
  • Automatorの中の「AppleScriptを実行」について質問で

    Automatorの中の「AppleScriptを実行」について質問です。 添付した画像のように、画像ファイルのタイプを変更し、そのファイルを開く、というワークフローを作りたいと思っています。 タイプ変更したあと、そのファイルを変数に格納してAppleScriptに渡したいと思っているのですが、うまくいきません。 Automatorで設定した変数を、AppleScriptに渡すにはどうすれば良いのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • Automatorのシェルスクリプトがエラーの場合

    以前こちらで教えていただいた方法で、Automatorのフォルダアクションのシェルスクリプトによるファイルのコピーを利用しています。 その節はお世話になりましてありがとうございました。 今回相談にのっていただきたいのは、下記のスクリプトでフォルダAにあるファイルをWindows7の中のiCloud Driveにコピーしているのですが、コピーできない時が何度かありました。 原因はWindows7との接続が切れてしまったからなのか、他に原因があるのかわかりませんでした。 そこで、コピーに失敗した場合にその原因をメールで通知することは可能でしょうか? 普段はモニターをつけていないので、メールが届いたらチェックすることができて便利なのですが、ネットで検索してもそのものズバリの解決策は見つけられませんでした。 もしメールでの通知が難しそうであれば、エラーのログを残すなどの方法でも構いませんので、ご指導をよろしくお願いします。 Automatorは下記のような設定です。 1. 指定されたFinder項目を取得(Automatorでのテスト用に設定) 2. フォルダの内容を取得 3.シェルスクリプトを実行 ======================================== #!/bin/bash path=$1 folderC=/Volumes/iCloudDrive cp "${path}" "${folderC}"/ ======================================== Mac OS X 10.8.5 よろしくお願いします。

    • ベストアンサー
    • Mac
  • applescriptでファイルをコピー

    様々な場所にあるファイルをapplescriptでフルパスを集めるところまでできました。 "/home/documents/xxxxx"_"/home/pic/yyyyy"_ のような形になっています。アンダーバーは半角スペース このコピーしたいファイルも10や20ならターミナルにそのままコピーペーストして cp "/home/documents/xxxxx"_"/home/pic/yyyyy"_ ~/test のようにすれば順番にコピーしてくれるのでいいのですが 数が多くなればターミナルが受け付けてくれなくなります。 分割してコピーペーストをしてもいいのですが、 なんとかこのコピーまでの処理をapplescriptでできないかなと思いまして質問をさせていただきました。 多いときには数百のファイルになるので、繰り返し処理だと不可がかかりすぎるのではないかと思いループは使っていません 同時にいくつものファイルを処理しそうで怖いのと、数が少ない状態で試しても分からないので。 あと1つのファイルのサイズは1M以下から大きくて15Mくらいです。 できるだけ負荷をかけないようにコピーする方法はありますか? applescript内で変数にこのフルパスが入っているので、automatorかapplescriptの処理だと助かります。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • Automatorのフォルダアクションについて

    お世話になります。 以前、こちらで「AutomatorのFinder項目のフィルタ適用」というタイトルで相談させていただいた者です。 お蔭様で希望通りの結果を得ることができました。 動作の希望は、Automatorを使用して、Mac mini Serverからネットワークフォルダを監視して、条件に合致したファイルが追加されたら自動で処理を実行したい、というものでした。 ご指導いただいたように下記の手順で設定をして、ほぼ問題なく動いているのですが、週に2回ほどファイルが追加されている場合でも処理が始まらず、手動で作業をすることがあります。 問題なく動いている場合と、失敗する場合で、何が異なるのか調べてみてもPCやネットワークなどの環境は同じ条件だったので原因がわからず、今回相談させていただきました。 手順 1.Automatorのフォルダアクションで「シェルスクリプトを実行」 --------------------------------------------------- 対象のフォルダ:ネットワークフォルダ シェル : usr/bin/ruby 入力の引渡し方法 : 引数として # encoding: utf-8 if RUBY_VERSION < %[1.9.0] require %[jcode] $KCODE=%[utf-8] else Encoding.default_external=%[utf-8] end ARGV.each do |f| if File.basename(f)[/^\d{6}(12|16).*lzh$/] abort %[エラーが発生しました] unless system %[open -W -a add_data2.app #{f}] # データ登録作業 end end --------------------------------------------------- ⇒ 追加ファイルの特定条件   yymmddの後ろの時間を示す数字が「12」か「16」のいずれかで、   拡張子が「lzh」のファイル ⇒ add_data2.app でlzhファイルを別フォルダにコピーや   解凍などの処理を実行 2.add_data2.app 実行 以上です。 拾いこぼしが起きる原因と対策を教えて下さい。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Mac
  • AutomatorのFinder項目のフィルタ適用

    お世話になります。 以前、こちらで「Automatorで変数を使ったファイル検索」というタイトルで相談させていただいて、お陰様で希望通りの結果を得ることができました。 http://okwave.jp/qa/q8563519.html 前回相談させていただいた時は、Automatorを使って特定の時間に、流動的なファイル名のフォルダを別のフォルダにコピーをしたい、という内容が目的でした。 今回はこれまでと状況が変わり、特定の時間では対応できなくなってしまったので、Automatorで特定のフォルダを監視しつつ、特定の条件を満たすファイル(流動的なファル名)が作成された時点でコピーの処理を実行したいのですが、「Finder項目にフィルタを適用」の部分でつまづいています。 検索したいファイル名は、12時台に作成される 「yymmdd12○○○.csv」と、 16時台に作成される「yymmdd16○○○.csv」というファイル名です。 監視するフォルダにはこのcsvファイル以外にも毎日複数のファイルが作成されています。 Automatorでは以下のように試してみました。 1. 指定されたFinder項目を取得 2. フォルダの内容を取得 3. 変数の値を設定     変数名:今日の日付     カスタムフォーマット:yymmdd 4. Finder項目にフィルタを適用 4. のフィルタの部分で、ファイル名に「12時台」を示す文字列を付与した「yymmdd15」というキーワードで検索をしたいのですが、フィルタの設定ではどのようにしたらよいのかわかりません。 そもそもフィルタの適用の設定で、変数を使うことはできないのですか? 12時台と16時台の2つの条件を設定するのは難易度が高そうなので、16時台の方は今までのやり方でAutomatorで指定の時間に処理を実行する方法でも構いません。 Finder項目にフィルタを適用する際に、変数を使用する方法を教えて下さい。 もしそれが不可能でしたら、他にどのような方法がありますか? ご指導よろしくお願いします。

    • ベストアンサー
    • Mac
  • AutomatorでCDをやく!

    こんにちは、お世話になっております。 先日こちらでAutomatorを教えていただき、やみつきになっております。 今回は「1度焼いたCDーRWを再利用してデータをいれなおす」という自動処理を作ってみたのですが、2回までしか使えません(^^;) Automatorに入力したアクションは2つで、 1、ファインダー項目の選択を求める 2、ディスクを作成(先に消去にチェック) です。 ディスクユーティリティで消去し、データを入れ、ディスク作成したCD-RWに対して、このAutomator実行が2回までしか使えません。3回目は失敗に終わり、CD-RWの中身は変わりません。そのディスクを再度、ディスクユーティリティにて消去し‥‥以下同作業をすると、また、2回実行できます。これはなぜなんでしょう。何かアクションが足りないのでしょうか?それともこういうものなんでしょうか、(笑)ちなみにtiger搭載G5を2台同時購入したのですが、両方同じ症状です。 回数に制限がなければ、私にとって、ものすご~~く感動的な自動処理になるのですが‥何だか不完全燃焼です。 なにかヒントなどないでしょうか。よろしくお願いいたします。 powerMAC G5、10.4.5 Automator1.0.3

    • 締切済み
    • Mac
  • automatorを使い、メールの自動送信の自動化をしようと思っていま

    automatorを使い、メールの自動送信の自動化をしようと思っています。 メールの作成まではうまく行ったのですが、最後の送信のところでどうしても止まってしまい、 ライブラリのアクションからではうまく行かないので、applescriptで試みようと思っています。 しかしながら、チンプンカンプンでして、「applescriptを実行」というアクションを挿入すると、 以下の文字が出るのですが、ここにどう記入すればよいのでしょうか。。。 やりたいことはメールの送信なので、ショートカットキーで言えば、 「command+shift+D」を押せればいいのですが。 on run {input, parameters} (* Your script goes here *) return input end run

    • ベストアンサー
    • Mac
  • osx automator 定期実行のスクリプト

    osxのautomatorで定期実行のスクリプトを作りたいです。 1時間置きに指定したフォルダにある複数のファイルが対象です。 どうすればいいでしょうか、全て教えてください。

    • 締切済み
    • Mac
  • Objective-CのNSTaskからAutomatorで作成したア

    Objective-CのNSTaskからAutomatorで作成したアプリを複数回実行するとフリーズするのですが、原因が分からないのでアドバイスをいただきたく書き込みさせていただきます。 Automatorの処理は、「イメージファイルにサムネールアイコンを追加」するだけの処理です。1度の実行で複数枚の画像を1枚ずつAutomatorに渡して処理を行います。 Automatorの実行は以下のような内容で実行しています。 -(BOOL)imageIcon(NSString *)filePath // 画像ファイルパス { NSTask *task = [[NSTask alloc]init]; NSURL *urlfilePath = [NSURL fileURLWithPath:filePath]; NSString *Command = [NSString stringWithFormat:@"/usr/bin/open"]; NSArray *argumets = [NSArray arrayWithObjects:@"-a", @"Automatorアプリのパス", [NSString stringWithFormat:@"%@",urlfilePath], nil]; [task setLaunchPath:Command]; [task setArguments:argumets]; [task launch]; [task waitUntilExit]; // 処理が完了していないのに処理を継続するのを防ぐ為、sleep [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]]; if([self processList:@"Automatorアプリ名"]){ //psコマンドを実行して、処理中ならYESを返す。 [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]]; } [task release]; return YES; } 上記の関数を各画像の処理時に呼び出しています。 上記の関数の先頭部にreturn YESで強制的に処理をすると、フリーズは発生しません。 また、フリーズした時は、Automatorアプリが実行中のままとなりますが、アクテビティモニタで見るとAutomatorアプリはありません。 Xcodeのコンソールにも、何も表示はありません。 説明がまとまっていなくてすいません。 どなたか、Objective-Cに精通されておられるかたおられまいたら、アドバイスをお願い致します。