行頭の数文字だけ色を変える(2)

処理したいテキストブロックを選択してからスクリプトを実行します。スウォッチカラーは以下のようにスウォッチ名で指定します。

activeDocument.swatches["レッド"].color

スウォッチ名が間違っていると駄目です。半角空白などが含まれるスウォッチ名には注意してください。スウォッチカラーの指定を行うスウォッチオプションダイアログで表示されるスウォッチ名をコピーして利用するのが確実です。
スウォッチ名を指定しているので、仮に英語圏で同じスクリプトを利用しようとする場合には正しく動作しないことになります。逆に英語圏で作成されたスウォッチ関係のスクリプトは動作しないものがあることになります。スウォッチ名に関しては名前ではなく登録順の番号でも指定できます。番号で指定した場合にはスウォッチが追加、削除された時に意図したものと違うスウォッチカラーが適用されてしまうことになり、これも問題があります。Illustratorは、どうもここらへんは需要も少ないせいか、ほとんど考慮されていないようです。もっとも自分しか使わない、社内でしか使わないのであれば問題はないのですが。

【先頭の数文字の色を変える】
count = 4; // 先頭4文字だけ色を変える
textColor = activeDocument.swatches["レッド"].color;

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
for (k=0; k<count; k++)
{
try { selObj[i].paragraphs[j].characters[k].fillColor = textColor; }
catch(e){ }
}
}
}

【末尾の数文字の色を変える】
count = 4; // 末尾4文字だけ色を変える
textColor = activeDocument.swatches["レッド"].color;

selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
len = selObj[i].paragraphs[j].characters.length;
for (k=len-1; k>len-1-count; k--)
{
try { selObj[i].paragraphs[j].characters[k].fillColor = textColor; }
catch(e){ }
}
}
}

【文字の色を交互に変える】
tempColor1 = activeDocument.swatches["レッド"].color;
tempColor2 = activeDocument.swatches["ヒスイ"].color;
textColor = [tempColor1, tempColor2];
selObj = activeDocument.selection;
for (i=0; i<selObj.length; i++)
{
for (j=0; j<selObj[i].paragraphs.length; j++)
{
for (k=0; k<selObj[i].paragraphs[j].characters.length; k++)
{
selObj[i].paragraphs[j].characters[k].fillColor = textColor[k &1];
}
}
}



[サンプルをダウンロード]