Skip to main content
Inspiring
July 19, 2022
Question

【JavaScript】ダイアログ強制表示にすると、ファイル選択ダイアログが2回出てきてしまう

  • July 19, 2022
  • 1 reply
  • 797 views

以前、下記リンク先の質問をさせていただきました。

イラレデータを開いてPhotoshopデータで保存したい

せっかく回答をいただいたのですがその後必要なくなってしまい、スクリプト作りを放置していました。

 

今回ほぼほぼ同じようなものが必要になってこの時教えてもらったことを試していたのですが、うまくいかない部分があり再度新規で質問させていただきます。

 

Photoshopで複数のaiデータを開き、開いたaiデータのフルパスを取得したく以下のようなコードにしました。

 

displayDialogs = DialogModes.ALL; //ダイアログ強制表示
var aiPath= File.openDialog ("aiファイルを選択","*.ai",true);

for(i=0;i<aiPath.length;i++){
    var doc = app.open(aiPath[i]);
    alert(aiPath[i].fullName);
}

 

以前の質問と同様、ファイルを開く時「PDFの読み込み」ダイアログで毎回チェックしてから開きたかったので、ダイアログを強制表示にしています。

 

しかし、上記のコードを試すとファイル選択ダイアログが2度出てきてしまいました。

 

以前の質問時も確かそうなってしまったのですが、当時はあの後必要なくなったので質問を締め切ってしまったような気がします。(申し訳ありません・・)

 

何故2回もファイル選択ダイアログが出てきてしまうのか良く分かりませんが、「PDFの読み込み」ダイアログは表示したまま、ファイル選択ダイアログが1回で済むようにするにはどうしたら良いでしょうか。

This topic has been closed for replies.

1 reply

yopplescript
Participating Frequently
December 15, 2023

コメント失礼いたします。

僭越ながら上記検証させていただきました。
冒頭に「DialogModes.ALL」を指定すると、photoshopのopenメソッドにおいて、
全てのダイアログ及びアラートが表示される仕様となっているらしく、
必ずファイル選択ダイアログが表示、その後にPDFの読み込みダイアログという挙動をとってしまいました。
せっかく2行目で「aiPath」にファイルの参照を配列で持たせているのに改めてファイルを指定させられるし、

「DialogModes.NO」などとすればダイアログは表示されずに開きますが

今度はPDFの読み込みダイアログが表示されないのはジレンマでした。

こちらJavaScriptのスレッドですので、正規の解決方ではないのですが、
appleScriptにておそらくはご希望の挙動をとるであろうコードを作成しましたので、
nekkonekoさんがMac環境でいらっしゃいましたらお試しいただければ幸いです。

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------

-

--photoshopのパスです。環境に合わせて適宜書き換えてください

set photoshop_app_path to "/Applications/Adobe Photoshop 2023/Adobe Photoshop 2023.app/"

 

tell application "Adobe Photoshop 2023"

set aiPath to choose file with prompt "aiファイルを選択" of type {"PDF "} with multiple selections allowed

repeat with i from 1 to count of aiPath

set a_ai_POSIX_path to my open_pdf_with_shell(photoshop_app_path, (item i of aiPath) as string)

tell front document

activate

do javascript "alert('" & a_ai_POSIX_path & "');"

end tell

end repeat

end tell

 

 

(*ターミナルのopenコマンドでアプリケーションを指定してファイルを開きます。

実質ファイルをアプリケーションにドラックアンドドロップするのと同じ挙動になり、

PDFPDF互換付きのAiファイルにおいて、ファイル指定ダイアログを飛ばしてPDFの読み込みダイアログが表示されると思います*)

on open_pdf_with_shell(photoshop_app_path, a_ai_path)

set a_ai_POSIX_path to POSIX path of a_ai_path

do shell script " open  -a '" & photoshop_app_path & "' '" & a_ai_POSIX_path & "'"

return a_ai_POSIX_path

end open_pdf_with_shell