Executing the script throws the Error 1242: Illegal argument
平素は誠にお世話になっておりますAdobe製品の機能評価をしております
Adobe製品の機能評価をしておりますが対応策があれば教えていただければ幸いです
[Windows11 Pro 22H2] Adobe Illustrator27.9で次のJavaScriptを実行するとError 1242:Illegal argument -argument 1のエラーとなりましたのでバグとして報告いたします
var textValue = null;
var selectedFont = null;
// アクティブなドキュメントを取得
var doc = app.activeDocument;
// インストールされている書体のリストを取得する関数
function getInstalledFonts() {
var fontList = [];
var fonts = app.textFonts;
for (var i = 0; i < fonts.length; i++) {
fontList.push(fonts[i].name);
}
return fontList;
}
var fontAll = getInstalledFonts();
// ダイアログボックスの作成
var dialog = new Window("dialog", "縦組テキストを配置", undefined, {resizeable: true});
dialog.orientation = "column";
// ダイアログボックスに「テキスト入力エリア」を追加
var textArea = dialog.add("edittext", undefined, "", {multiline:true, scrolling:true});
textArea.preferredSize = [500, 200]; // 幅500、高さ200
// ダイアログボックスに「書体の選択」の追加
var fontDropdown = dialog.add("dropdownlist", undefined, fontAll, {scrolling:true}); // インストールされている書体のリストを取得
fontDropdown.selection = 0; // デフォルトで最初の書体を選択
// OKボタンの追加
var okButton = dialog.add("button", undefined, "OK");
okButton.onClick = function() {
// ダイアログボックスが閉じられたときの処理
textValue = textArea.text;
// ダイアログボックスが閉じられたときの処理
var selectedFont = fontDropdown.selection.text; // 選択された書体を取得
alert("選択された書体: " + selectedFont); // 選択された書体をalertで表示
dialog.close();
};
dialog.show();
// ドキュメントの取得
// var doc = app.activeDocument;
// 書体サイズと行間の設定
var fontSize = 24;
var leading = 14;
var textString = textValue;
// アートボードのサイズを取得
var artboardRect = doc.artboards[0].artboardRect;
var artboardWidth = artboardRect[2] - artboardRect[0];
var artboardHeight = artboardRect[1] - artboardRect[3];
// 文字の配置開始位置
var startX = 30;
var startY = -30; // 適宜調整
// 文字列を一文字ずつ処理
for (var i = 0; i < textString.length; i++) {
// 新しいテキストアートを作成
var textFrame = doc.textFrames.add();
// テキストの設定
textFrame.contents = textString[i];
textFrame.textRange.characterAttributes.size = fontSize;
textFrame.textRange.characterAttributes.textOrientation = TextOrientation.VERTICAL; // 縦書きに設定
textFrame.textRange.characterAttributes.textFont = app.textFonts.getByName(selectedFont); // ここでエラーが発生
// 位置の設定
textFrame.position = [startX, startY];
// 次の文字への移動
startY -= textFrame.width; // 縦書きなのでY方向に移動
// アートボードの下端に到達したら改行
if (startY < artboardRect[3]) {
startY = -30; // 初期値に戻す
startX += leading; // 次の列へ
}
}
-
Sergey Osokin commented
You have a problem with selectedFont. In the function okButton.onClick remove the word "var". You should still have selectedFont = fontDropdown.selection.text;
You declare an internal variable of the same name inside the onClick() function using var. And the global variable selectedFont remains set to null.
-
Who wrote the script, and what is the purpose of it?
I get no error messages when I try to execute it.
Running Windows 10, Ai Beta 28.3.0.55