2016-08-09 4 views
0

私が作成したC#winformアプリケーションの一部として、繰り返し処理してプレーンテキストに変換する必要がある、独自の個々のサブフォルダにクラスタ化された大量の.incxテキストドキュメントがあります。私はInCopyとExtendScript Toolkitの最新バージョンと、静かに素早く私の平文ファイルを作成するのに最適な.jsxスクリプトを持っています。.incxファイルのバッチ処理用のC#とExtendScript

私の問題/疑問は、実行中のサードパーティ製アプリケーションのC#クラス内からこれを最もうまく起動し、関連情報を送信する方法に関する多くのガイダンスがないことです。 .jsxスクリプトを実行すると、.incxファイルを見つけることができるアプリケーションからターゲットフォルダを送信する必要があります。

ターゲットフォルダは、私のアプリでの以前の他のアクションに応じて動的になります。

ありがとうございます。私はアドビのフォーラムで、.vbsファイルや外部テンポラリファイルを使って解決策を見つけましたが、それはかなり古くなっています。誰かが知っているかどうかを尋ねると思っていました。現代の方法。不明な点があれば、すぐに対応して明確にします。

答えて

0

グーグルと私自身の試行錯誤を通して、私は自分の答えを見つけました。

私が見つけることができる最良の方法は、VBSですべてのInCopyスクリプトを実行し、Processインスタンスを使用して、cscriptでargを送信することです。

例C#:

Process myScriptProc = new Process(); 
myScriptProc.StartInfo.FileName = @"cscript"; 
myScriptProc.StartInfo.WorkingDirectory = rootDir + "\\";  // rootDir being the path where my vbs lives 
myScriptProc.StartInfo.Arguments = "MyScript.vbs " + filesPath; // filesPath is the arg sent to the script 
myScriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
myScriptProc.Start(); 
myScriptProc.WaitForExit(); 
myScriptProc.Close(); 

MyScript.vbs

main 
Function main() 
    Set myInCopy = CreateObject("InCopy.Application.CC.2015") 
    Set obj = CreateObject("Scripting.FileSystemObject") 
    myInCopy.ScriptPreferences.UserInteractionLevel = 1699640946  
    myFormat = 1952412773 
    myExtension = ".txt" 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    objStartFolder = WScript.Arguments(0) 
    Set objFolder = objFSO.GetFolder(objStartFolder) 
    Set colFiles = objFolder.Files 
    For Each x In colFiles 
    If LCase(objFSO.GetExtensionName(x.name)) = "incx" Then 
      thisDoc = x 
      Set myDoc = myInCopy.open(thisDoc) 
      Set myStory = myInCopy.ActiveDocument.Stories.Item(1) 
      parts = split(x.Name, ".") 
      myFilePath = objStartFolder & "/" & parts(0) & myExtension 
      myStory.Export myFormat, myFilePath 
      myDoc.close() 
      obj.DeleteFile(thisDoc) 
     End If 
    Next 
    myInCopy.ScriptPreferences.UserInteractionLevel = 1699311169 
End Function 

アドビのフォーラムを吹き抜けるtumbleweedsから判断すると、私はどんな答えを取得するつもりはなかったので、私は、VBScriptの私のJavaScriptファイルを書き直しDoJavaScriptFileを呼び出すためのドキュメンテーションの例で、オブジェクトにメソッドエラーが見つかりません。

VBでスクリプトをやり直した後の最大のハードルは、スクリプトを外部から実行すると、Adobe固有のものに超秘密の列挙10進数値を使用する必要があるということでした。 MyScript.vbsを見ると、ランダムな10桁の値のようなもののいくつかのインスタンスが表示されます。ここから来たもの:私は私の人生を保存するためのAdobeのドキュメントのいずれかにその情報を見つけることができなかったので、

http://jongware.mit.edu/idcs5js_html_3.0.3i/idcs5js/index_Enum%20Suite.html

は、そのリソースを作成した人を祝福します。

TL; DR: Adob​​eアプリケーションの外部で実行されるプロセスやスクリプトを使用して自動化しようとする場合は、VBScriptですべてを行い、謎の小数点挙を注意してください。

無用脚注: MyScript.vbsここでは、ディレクトリに渡されたからすべての* .incxファイルを読み込み(同じファイル名で、同じディレクトリ内に)、プレーン.TXTとして輸出し、オリジナルを削除します。

関連する問題