終了

Photoshop アートボード名を文字列から一括入力

Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

Photoshop 24.5.0にて、

(投稿者使用:MacBook Pro (Retina, 13-inch, Late 2013)、macOS Big Sur ver 11.7.8)

アートボード名を文字列から一括で入力できるスクリプトを探しています。

 

例えば

A

B

C

という文字列から「A」「B」「C」と名前のついたアートボードを一括作成するスクリプト

もしくは

新規作成したアートボード3つ(「アートボード1」「アートボード2」「アートボード3」)の

名前を一括で「A」「B」「C」に変更するスクリプト

 

大量のアートボード名を変更する必要があるため、

ぜひお力いただきたいです。

よろしくお願いいたします。

キーワード
macOS

表示

364

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

というわけで(探すのをお手伝い)

このあたりとか?

Custom script for renaming artboards, with multiple elements

 

その「文字列」というものがどこに存在しているのかによりますが。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

ありがとうございます!!

当方の知識不足によりうまくお伝えできず申し訳ないです...

 

文字列はNumbersから拾いたいです。

表に名前が羅列されているので、それをそのまま各アートボード名にするイメージです。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

Numbersから値を取得するにはAppleScriptなどの、ExtendScript以外の言語を利用することとなります。

AppleScriptでもPhotoshopは制御可能ですが、ネット上に公開されている例文やフリー公開のスクリプトというと極端に弾数が少ないですね。

ExtendScript内で部分的にAppleScriptや他のスクリプト言語を実行することも可能なので、今回はそれをふまえてNumbersのパート、Photoshopのパートそれぞれで探して、どうにかこうにか組み合わせるか、もしくはNumbersパートを妥協して若干の手作業を混ざるか、といったところかと思います。

書ける人に有償依頼する意思があるならその旨を表明しておけば誰か来てくれるかなーとも思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

もう少し模索を続けたいと思います...!

ありがとうございます...!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

ここまでのものをもとにして、

  • AppleScript主体で動かす(gjiosehさんが書いてくださったコードの 「do javascript "" 」の "" 内にExtendScriptを記述
  • ExtendScript主体で動かす(app.system(""); と書き、"" 内にgjiosehさんのコードを改造して入れる)

主にこのどちらかになるかと思います。

引数(文字列)の受け渡しさえなんとかなれば、といったところですね。

 

あとはもう「探す」は限界だと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

初歩的な質問で大変申し訳ないのですが、

macであればスクリプトエディタでファイルを開き、

実行する形で問題ないでしょうか...?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

そうですそうです。

gjiosehさんのコードはAppleScriptなので、新規ドキュメントに全文ペーストして、ウィンドウ左上の選択がAppleScriptになっているのを確認して実行。

スクリーンショット 2023-09-15 13.59.02.png

 

(いつの日か)うまく動いた時はそのドキュメントを保存してください。

保存時のファイルフォーマットを「アプリケーション」にすれば、スクリプトエディタで開かなくてもファイルのダブルクリックで実行できるようになります。

 

ただ現状、gjiosehさんの返信にあるとおり、Photoshopにやらせる部分が未実装なのです。エラーメッセージに出た「 JavaScript コードがありませんでした」そのままの意味ですね。

それは別途用意して組み込む必要があります。

最初に返信したリンク先のコードの、リネーム用の文字列を取得した後の部分(アートボードすべての名前を変更していくところ)は大変参考になると思います。

 

あとは、AppleScriptが持っている、Numbersから取得した文字列を、どうやってPhotoshopを担当するExtendScriptに渡すか、が解決できればゴールは目前ですね。

検索ワードは「AppleScript   do JavaScript  引数」などです。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

ありがとうございます!

初心者が欲張ってしまい申し訳ないです...

お二人が送ってくださったものを参考にもう少し奮闘します!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

いえー、欲張りとてもだいじです。

まだスクリプトが書けなくても、探し方がうまいとか、人に書き起こしてもらう時の要件定義が具体的だとかはかなり強力な武器になりますので、そっちを伸ばしていくのはとても有効だと考えています。

 

今回、手元のMacにNumbersをインストールする余地がなくて、やむなく声援にまわっています…

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

下記はNumbersで選択したひとつの列からデータを取り出し、Photoshopへ渡すことができるかもしれないAppleScriptです。
ちょっと歯切れが悪いですが、私の環境では現状Photoshopが使えなくて動作確認およびコードの作成ができません。
どなたか作ってくださると.....

 

下記スクリプトとしては、Numbersでひとつの列にデータを書き込んでおき、その列を選択、実行するとスクリプト内の変数「ii」にリピートでデータが順に一つずつ入ります。
その変数を使ってそれをPhotoshopへ渡し、アートボードが作成できればいけるような気はしてます。
「do javascript "" --Photoshopでの処理をここに」の "" 内にスクリプトを記述すれば、多分いけると思います。多分....
できるとは言い切れてませんのであまり大きな期待は。。。。


use AppleScript version "2.4"
use framework "Foundation"
use scripting additions

tell application "Numbers"
tell front document
tell active sheet
try
set theTable to first table whose class of selection range is range
on error
beep
display alert "何も選択されていません。"
return --何も選択されてなかった場合は終了
end try

tell theTable
set selList to value of (every cell of selection range)
set columnCount to count of (column of selection range) --列をカウント
if columnCount > 1 then
beep
display alert "2列以上選択されています。1列のみ選択してください。"
return
end if
end tell
end tell
end tell
end tell

repeat with i in selList
set ii to contents of i
if ii is not missing value then
log ii
if application id "com.adobe.Photoshop" is running then
tell application id "com.adobe.Photoshop"
if exists front document then
tell front document
try

do javascript "" --Photoshopでの処理をここに

on error msg
return msg
end try
end tell
end if
end tell
end if
end if
end repeat


on regexReplace(aText as text, pattern as text, replacement as text)
--require framework: Foundation
set regularExpression to current application's NSRegularExpression's regularExpressionWithPattern:pattern options:0 |error|:(missing value)
return (regularExpression's stringByReplacingMatchesInString:aText options:0 range:{location:0, |length|:count aText} withTemplate:replacement) as text
end regexReplace

 

スクリーンショット 2023-09-14 20.32.03.png

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

Photoshop内の処理のスクリプトについて、

模索し試してみたいと思います!

本当にありがとうございます!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

実行してみましたところ、

「Photoshopの一般エラーが発生しました。 この機能は、このバージョンの Photoshop で使用できない可能性があります。

- JavaScript コードがありませんでした」

と表示されてしまいました。

 

こちらの対処法をもしご存知でしたらお教えいただきたいです。

当方プログラミングの知識が浅く...

可能であればで大丈夫です!よろしくお願いします!

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

すみません。説明が足らなかったですね。

ajabon grinsmithさんから詳細の説明があったので私からの詳細は要りませんね..

AppleScriptからPhotoshop側のJavaScript(ExtendScript)への引数は文字列を渡すだけなんで可能です。

その引数(データ)をひとつずつ渡すのか、データを区切り文字で羅列してまとめて渡し、

JavaScript側で配列に変換しデータを回すのかくらいです。

AppleScriptにExtendScriptを実装するのが使いやすいかもしれません。

AppleScript側で何か仕様変更したいことがあれば言ってくださいね。

できる限り応援させてもらいます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

あ、データの羅列渡しても出来なかったかも。

あれもこれもやってみないとですが、いい加減なこと書いてしまったかもしれません。

すみません。

私の方で試せたらいいんですけど、もしできるならもう少し込み入ったところまでできたかもしれません。

 

色々やってみてください。

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 14, 2023 Sep 14, 2023

リンクをクリップボードにコピー

コピー完了

いえ...!こちらこそ、無知であるにも関わらず、

無理なお願いをしてしまい申し訳ありませんでした。

プログラムを組んだことがなく、本当に浅い知識で挑んでしまったので、

流石に無理がありました...

もう少し知識を得てから取り組もうと思います...!

たくさん助けていただきありがとうございました!!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

ためしにですが、gjiosehさんのコードの

 

 

do javascript "" --Photoshopでの処理をここに

 

 

のところを

 

 

do javascript "alert(arguments[0])" with arguments ii

 

 

に差し替えて実行してみてください。( ↑ すみません一箇所しくじって投稿後編集しました)

それでPhotoshop上でアラートが出れば成功でっす。

 

ちょっとの懸念点がありまして、

文字列の要素数とアートボード数が合わない場合を考えたり、

1回ずつPhotoshopに投げたとして、2回目以降は前回リネームしたアートボードの次をやらないといけないので、そのあたりの判定が面倒そうです。

なので、

  • PhotoshopパートもAppleScriptで書く
  • Numbers上のありったけの文字列たちを、配列化してソース化した文字列をPhotoshopに送り、配列にもどして落ち着いてループ処理する

のどっちかがいいかなあとも思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

実行してみたところ、以下のアラートが出ました...!

書類 Numbersで選択されたひとつの列にあるデータを読み取ってPhotoshopで処理.txt を自動保存できませんでした。(エラー-1,752

 

これは成功?のアラートではないですよね...?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

成功…じゃないほうのアラートですね…

投稿直後にミス直して下の文言にゴメンナサイ追記したのを認識いただいた上でこのエラー出てすんですかね?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

はい!修正の投稿をしていただいた後のものを入力し、実行させていただいております...!

すでにPhotoshopの質問では無くなってしまっていますね、本当に申し訳ありません...!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

どういたしまして^^

最初は誰でもできないところからだと思います。

私も?好きで続いてます。

そのうち面白いものが出来上がるかもしれませんよ。

徐々にでも覚えていってください。

初めは、気になるコードをコピペで動かしてみるといいと思います。

 

データの羅列を渡す場合、下記はSafariの例ですがPhotoshop(ExtendScript)でも、多分.. 同じような感じで渡せると思います。

 

-- 配列(リスト)を区切り文字で区切ったテキストに

set |strings| to retDelimedText({"1", "2", "3", "4", "5"}, ",") of me

--> 1,2,3,4,5

 

tell application "Safari"

if exists front document then --ドキュメントが開かれている場合以下を実行

--変数をテキストとして扱うため変数をシングルクォートで囲み文字列として扱い、.split(',')で分割し配列に

--for文で配列の要素を一つずつ取り出し

do JavaScript "

var array = " & (quoted form of |strings|) & ".split(',');

for (var i = 0;i < array.length; i++) {

alert(array[i]);

}

" in front document

end if

end tell

 

on retDelimedText(aList, aDelim)

set aText to ""

set curDelim to AppleScript's text item delimiters

set AppleScript's text item delimiters to aDelim

set aText to aList as text

set AppleScript's text item delimiters to curDelim

return aText

end retDelimedText

 

スクリーンショット 2023-09-15 16.50.59.png

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

ちなみにこのスプリクトを実行するとどのような結果になりますでしょうか...?

まだ読み取ることができなくて...!

(できればで大丈夫です...!ものすごくお時間取らせてしまっていると思うので...)

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

時間はお気になさらずに^^

 

Safariが立ち上がっててウインドウ開いた状態だと動きがわかりやすいんですけど、

実行するとただ単純に1〜5の数字(テキスト)が順にアラート表示されるだけです。

プログラミング始めたてでよくやる?(動きを見る)ものだと思います。

 

スクリーンショット 2023-09-15 17.49.15.png

 

 

 

 

 

ただ、今回の場合、

データをリスト(配列)で用意し、それを区切り文字で連結、ExtendScript上でその文字列を配列に変換し処理しているところが重要です。

ExtendScript上で配列として扱えれば繰り返しの処理がやりやすいと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

ありがとうございます...!

そのまま実行してみたところ、エラーが出てしまいました...が、

これを参考に進めてみます...!本当にありがとうございます!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 15, 2023 Sep 15, 2023

リンクをクリップボードにコピー

コピー完了

どんなエラー出ました?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines