終了

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

どのようにデータを渡したいか決まらないことには次へ進みにくいと思いますが、

Numbersのデータを羅列として文字列を渡したい場合、最初のデータを一つずつ渡すスクリプトではできませんので(少し書き換え・書き加えが必要)必要になったら言ってくださいね。

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

「Safariでエラーが起きました: You must enable the 'Allow JavaScript from Apple Events' option in Safari's Develop menu to use 'do JavaScript'.」

というエラーが出ました!

 

JavaScriptを有効にする、にチェックを入れ直して

再度実行しても同様のエラーが出ました。

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

あ、なるほど。

すみませんです、伝え忘れてました..

“開発”メニューの、ここ有効にしてみてください。

 

スクリーンショット 2023-09-19 13.23.25.png

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

Safariの環境設定 > 詳細 > メニューバーに “開発” メニューを表示

にチェックを入れて、開発メニューから「JavaScriptを有効にする」を選択、

でどうでしょう

 

もう少し様子を見ますが…スレッドの趣旨がPhotoshopからだいぶ遠いところへきているため、流れによってはJapan Roungeフォーラムへ移動させていただくかもしれません。

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

追伸

実行にはJavaScriptが有効であることも必要ですので、ajabon grinsmithさんのものも間違いではありません。

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

すみません。何か操作誤ってダブって投稿されてしまいました...

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

@gjioseh さん

最新のものを残して重複投稿を片付けました。また、残った投稿に、はじめのほうの投稿に貼られていたスクリーンショットを移植させていただきました。

不都合な点があればおっしゃってくださいませ。

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

ありがとうございます。

スッキリしました!(感謝)

 

スクリプトのソース 

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

おはようございます。

長らく時間があいてしまいましたが、その後どうでしょう?

やっとPhotoshopが使える状態になったので、ちょっと続きをやってみました。

Numbersで列方向のセルにたとえば、「A」「B」「C」と入力して、入力したところを選択し

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

 

set aList to {}

repeat with i in selList

set ii to contents of i

if ii is not missing value then --空白を除外

log ii

set the end of aList to ii

end if

end repeat

--set |strings| to retDelimedText(aList, ",") of me --文字列として処理する場合

 

if application id "com.adobe.Photoshop" is running then

tell application id "com.adobe.Photoshop"

if exists front document then

tell front document

try

 

--Photoshopでの処理をここに

do javascript "

var dimensions = [app.activeDocument.width.value,app.activeDocument.height.value];

var bottom = dimensions[1];

var left = 0.000000;

var right = dimensions[0];

 

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

//alert(arguments[i]);

var idmake = stringIDToTypeID( \"make\" );

    var desc66 = new ActionDescriptor();

    var idnull = stringIDToTypeID( \"null\" );

        var ref13 = new ActionReference();

        var idartboardSection = stringIDToTypeID( \"artboardSection\" );

        ref13.putClass( idartboardSection );

    desc66.putReference( idnull, ref13 );

    var idusing = stringIDToTypeID( \"using\" );

        var desc67 = new ActionDescriptor();

        var idname = stringIDToTypeID( \"name\" );

        desc67.putString( idname, arguments[i] );

    var idartboardSection = stringIDToTypeID( \"artboardSection\" );

    desc66.putObject( idusing, idartboardSection, desc67 );

    var idlayerSectionStart = stringIDToTypeID( \"layerSectionStart\" );

    desc66.putInteger( idlayerSectionStart, 6 );

    var idlayerSectionEnd = stringIDToTypeID( \"layerSectionEnd\" );

    desc66.putInteger( idlayerSectionEnd, 7 );

    var idname = stringIDToTypeID( \"name\" );

    desc66.putString( idname, \"\"\"アートボード 1\"\"\" );

    var idartboardRect = stringIDToTypeID( \"artboardRect\" );

        var desc68 = new ActionDescriptor();

        var idtop = stringIDToTypeID( \"top\" );

        desc68.putDouble( idtop, 0.000000 );

        var idleft = stringIDToTypeID( \"left\" );

        desc68.putDouble( idleft, left );

        var idbottom = stringIDToTypeID( \"bottom\" );

        desc68.putDouble( idbottom, bottom );

        var idright = stringIDToTypeID( \"right\" );

        desc68.putDouble( idright, right );

    var idclassFloatRect = stringIDToTypeID( \"classFloatRect\" );

    desc66.putObject( idartboardRect, idclassFloatRect, desc68 );

executeAction( idmake, desc66, DialogModes.NO );

left = right + 100;

}

" with arguments aList --リストを引数として

 

--データを文字列として処理する場合。こんな感じ??

(*

do javascript "

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

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

alert(array[i]);

}

"

*)

 

 

on error msg

return msg

end try

end tell

end if

end tell

end if

 

 

 

-- 数字を削除。このように使う。

--regexReplace("1あ1いうえお0123", "\\d", "") of me

--return regexReplace("1あ1いうえお0123", "[0-9-]", "") of me

 

--正規表現を使ってテキストを置き換えするときに使うハンドラ

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

 

--リストを入力し、指定の区切り文字で区切ったテキストを返すハンドラ

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

 

スクリーンショット 2024-08-08 4.40.04.png

 

0503EED1-FFC0-4946-8A62-3587FE379CAB.png

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

コードの一部が絵文字になってしまった..

これなら??

https://drive.google.com/uc?export=view&id=19RdaSNLxGvLSi2O6416INsF-MiCgwyAD 

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

おはようございます。

実の所、少々諦めモードになっておりました...

 

gjiosehさんに今回いただいたスクリプト実行してみたところ、

うまくいきました...!

感動しています...作業時間が大幅に削減できそうです!

 

今回のトピックに参加してくださったみなさんに感謝申し上げます。

本当にありがとうございました。

 

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

仕様的に少しばかりの不安がありましたが、お役に立てたようで良かったです!^^

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