applescriptかautomatorで…。

macmini (OSX10.10.4 yosemite)使用。


[問題]

 FilemakerServerでスケジュールされたインポートに対し、

「fmserver」という権限がないとインポートができない。


[状況]

 他のアプリケーションから生成されるcsvファイルがあります。

 現在フォルダアクションを使って、あるフォルダ(フォルダ名を仮にAとします。)に

 このcsvファイルが生成されたら、FileMakerServerのDocumentsフォルダに移動させる

 仕組みを作っています。

 この時、フォルダAにあるファイルをDocumentsフォルダのファイルに置き換えに行くので、

 一旦Documentsフォルダにあるファイルに対し、「fmserver」の権限を追加しても、

 置き換えられた時点で権限がなくなってしまい、結果としてFilemakerのインポートが

 できない状況となっています。


[考えたこと]

1)applescriptやautomatorなどを使用して「fmserver」という権限を設定できないか?

2)上記1)の権限設定が不可能ならcsvファイルを移動させるのではなく、中身だけコピペできないか?


いろいろと模索して試したりしたのですが、当方Mac歴が浅く、見よう見まねでしている状況でして、

なかなか理解できずに苦慮しています。


2)に対しては、automatorを使用して、フォルダAにあるファイルを開き、内容をクリップボードに

コピーするまではできたのですが、クリップボードの内容をDocumentsフォルダにあるファイルの中に

ペーストすることができませんでした。

~automator設定内容~

 「指定されたFinderを取得」-「Finder項目を開く」-「テキストエディット書類の内容を取得」-

「クリップボードにコピー」-「指定されたFinder項目を取得」-「Finder項目を開く」-「クリップボードの内容を取得」


説明がわかりにくくてすみませんが、

他の方法も含めて、この問題を解決できる方法があれば教えて頂けないでしょうか?

Mac mini, OS X Yosemite (10.10.4)

投稿日 2015/08/11 00:20

返信
返信: 6

2015/08/11 01:36 NASA8510 への返信

fmserver という権限がどういうものか知らないのでそちらはパスしますが、ファイルの内容だけを書き換えるスクリプトは簡単です。


例えば、以下のスクリプトは、SRC にある file.csv の内容を読んで、その内容で DST の file.csv を上書きします。DST に file.csv が存在しなければ新たに作りますが、すでに存在するなら新たに作らずにすでに存在するファイルの内容だけを書き換えます。



#!/bin/bash SRC="/path/to/A" DST="/path/to/FileMakerServer/Documents" cat "$SRC"/file.csv > "$DST"/file.csv




お役に立つかどうか、わかりませんが。

2015/08/11 04:50 chandana への返信

chandanaさん、ありがとうございます。


教えて頂いた方法をAppleScriptで試してみましたが、

コンパイルしたところ 一番下の「cat "」のところで

構文エラーが出て引っかかってしまいました。

エラーの内容は、

end of line などがあるべきところですが・・・が見つかりました。

と記載されていました。


全部文字もチェックし、パスもドラッグアンドドロップで設定したのですが…。

再度教えて頂けないでしょうか?

2015/08/11 05:45 NASA8510 への返信

それはシェルスクリプトであって、 AppleScript ではありません。


「フォルダ A に CSV ファイルが生成されたら、FileMakerServer の Documents フォルダに移動させる仕組み」、というのがどのようなものかわからないので、フォルダアクションだと仮定します。その場合は、Automator でフォルダアクションを作成して、以下のような「シェルスクリプトを実行」のアクションからなるワークフローを定義すればよいです。



「シェルスクリプトを実行」アクション


シェル: /bin/bash

入力の引き渡し方法: 引数として

コード: 以下の通り


#!/bin/bash DST="/path/to/FileMakerServer/Documents" for f in "$@" do [[ -f "$f" ]] || continue cat "$f" > "$DST/${f##*/}" && rm "$f" done



DST には、「FileMakerServer の Documents フォルダ」のフルパスを指定します。



ワークフローはこんな感じ。


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



このフォルダアクションが正しく動作すれば、フォルダアクションで指定したフォルダ A にファイル X が作られた場合、そのファイル X の内容を読んで、DST にある同じ名前のファイルの内容を差し替えて、X を削除します。X がファイルでない場合(ディレクトリ等)は無視します。


但し、私の経験では、フォルダアクションは非常に信頼性が低いので、当てになるかどうかはわかりません。


又、以上は、OS X 10.6.8 での話しです。それ以降のシステムは知りません。

2015/08/16 04:30 NASA8510 への返信

参考になるかどうかわかりませんが、単純にCSVファイルの内容を新規テキストファイルにコピペする

なら、「指定されたFinader項目を取得」「Finder項目を開く」「テキストエディット書類の内容を取得」

「新規テキストファイル」で指定した保存先の新規テキストファイルに内容をコピペできると思いますが、

どうでしょうか?ちなみにFileMakerServerについては全く知識がなくお力になれません。

2015/08/17 01:18 Mega3 への返信

ni_kiさん、chandanaさん、Mega3さん、回答ありがとうございます。

また、返信が遅くなり申し訳ありませんでした。


ni_kiさん

手入力を行った結果が「×」でした…。


chandanaさん、何度も回答頂きスミマセン。

教えて頂いた内容で再度試してみたのですが何が違うのか、

思った通りの動きをしてくれませんでした。

フォルダアクションって信頼性が低いという情報を初めて知ったので、

様子を見ながら使用してみたいと思います。


Mega3さん

あまり知識のない私にとって、教えて頂いた方法は一番簡単に理解・実行できる方法でした。

おかげさまで少し悪戦苦闘はしましたが(csvファイルをcsvファイルとして保存できず、

txtファイルでは可能でしたのでこれで改善)コピペすることができました。


皆さん、本当にありがとうございました。

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

applescriptかautomatorで…。

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