Если есть вопросы по скриптам

Статус
Закрыто для дальнейших ответов.

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Сработал вот такой вариант:
var mySel = app.activeDocument.selection[0].parentStory;

А вот этот вариант ошибку не выдал но обработал только треть текста
var mySel = app.activeDocument.selection[0].parentTextFrames[0];
 

hulk1776

15 лет на форуме
Сообщения
725
Реакции
21
Можно ли присвоить шаблонную страницу к диапазону страниц?

Код:
myDoc.Pages(2).AppliedMaster = "B-Master"
пишется Method AppliedMaster or Object Page failed.



Код:
myDoc.Pages.ItemByRange(2, 5).AppliedMaster = "B-Master"
пишется Object doesnt support this property or Method
 

boriskasmoscow

15 лет на форуме
Сообщения
343
Реакции
410
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

В Adobe-примерах для ID CS4 написано так: myPage.appliedMaster = myDocument.masterSpreads.item("B-Master");
 

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

Можно совсем "напрямую":
myPage.appliedMaster = myDocument.masterSpreads.itemByName("B-Master");

Когда-то нарвался на отказ из-за ошибки реализации скриптинга, или еще из-за чего, теперь постоянно использую itemByName в таких случаях.
 

hulk1776

15 лет на форуме
Сообщения
725
Реакции
21
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

Можно совсем "напрямую":
myPage.appliedMaster = myDocument.masterSpreads.itemByName("B-Master");
Сработало, почему-то, только если без ItemByName (иначе Indi CS3 пишет Object doesn't support this property or method). ОК.


Но на комаду для диапазона страниц
Код:
Set myPage = myDoc.Pages.ItemByRange(myDoc.Pages(2), myDoc.Pages(4))
myPage.AppliedMaster = myDoc.MasterSpreads.Item("B-Master")
опять Object doesn't support this property or method
Т.е. на диапазон страниц повестить шаблон одной командой нельзя, только через цикл? (а может диапазон неправильно записан?)
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

Бейсик может и не поддерживать ни itemByName, ни itemByRange. На Jav-е всё работает вот так (обратите внимание на регистр букв, здесь это важно):
Код:
myDoc.pages.itemByRange(2, 4).appliedMaster = myDoc.masterSpreads.item("B-Master");
 

hulk1776

15 лет на форуме
Сообщения
725
Реакции
21
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

Бейсик может и не поддерживать ни itemByName, ни itemByRange. На Jav-е всё работает вот так (обратите внимание на регистр букв, здесь это важно):
Код:
myDoc.pages.itemByRange(2, 4).appliedMaster = myDoc.masterSpreads.item("B-Master");

Точно. Про язык-то я забыл.
Пришлось выкручиваться так:
Код:
myJavaScriptString = "app.activeDocument.pages.itemByRange(2, 4).appliedMaster = app.activeDocument.masterSpreads.item(""B-Master"");"
MyValue = myInd.DoScript(myJavaScriptString, idScriptLanguage.idJavascript)
Теперь все ОК (хотя в VBA и есть ItemByRange, но команда .appliedMaster, диапазон, видать, не понимает.
Будем конбинировать.
Спасибо!
Спасибо.
 

LeshikSan

15 лет на форуме
Сообщения
266
Реакции
185
Ответ: Можно ли присвоить шаблонную страницу к диапазону страниц?

Вроде как можно считывать кодировку файла:
Код:
myFile.encoding
Но у меня это выражение возвращает пустую строку (Win 7). Это баг или так и должно быть?
 

Nano

Участник
Сообщения
47
Реакции
100
Ответ: Если есть вопросы по скриптам

Можно получить кодировку файла только после того как вы сами ее укажите. Вообще у файлов нет каких-либо метаданных кроме размера, дат изменения/создания, атрибутов и прав доступа.

Код:
var f = new File('/filename');
f.encoding = 'utf8';
alert(f.encoding);
 

PICC

Участник
Сообщения
16
Реакции
0
Где найти ПОЛНОЕ описание объектной модели InDesign CS3 JavaCript?

Доброго времени суток :) !
Я новичок в программировании InDesign (а так - программист высокого класса, тем более что JavaScript использую в веб-программировании). Есть проблема - пытаюсь чего-нибудь сделать (в частности, тень для картинки), и вынужден просматривать в ExtendScript объектную модель по кускам. А целостную картинку нигде найти не могу - в смысле, какие объекты от каких наследуют, перечень коллекций и т. д. В общем, я так и не нашел РАБОТАЮЩУЮ ссылку на полное описание DOM для JavaScript. Неужели его нет? Не верится.
Подскажите, пожалуйста! Разумеется, подойдет и английская версия.
Спасибо заранее!
 

Siewurd

Участник
Сообщения
1
Реакции
0
Ответ: Если есть вопросы по скриптам

Как назначить CharacterStyles на слово выделенное двумя точками, используя VBS
Код:
Set myCell = myTable.Columns.Item(2).Cells.Item(2)
                        If Not (Trim(CStr(Cell12)) = "") Then
                            myCell.Contents = CStr(Cell12)+[B]". "+[I]CStr(Cell5)[/I]+". "[/B]+CStr(Cell6)+", "+CStr(Cell7)
                            Set MyPar = myCell.Paragraphs.Item(1)
                            MyPar.AppliedParagraphStyle = myDocument.ParagraphStyles.Item("ANONS")
                            myPar.AppliedCharacterStyle = myDocument.CharacterStyles.Item("TEXT")
                            FirstComma = InStr(1, MyPar.Contents, ".")
                            If FirstComma > 2 Then
                                For i = 1 to FirstComma
                                    myPar.Characters.Item(i).AppliedCharacterStyle = myDocument.CharacterStyles.Item("ANONS_SRL")                                    
                                Next
                            End If
                        Else

Вот что у меня есть. Как сделать чтобы значению 5-ой ячейки присваивался другой CharacterStyles?
видимо есть способ используя GREP - myInDesign.FindGrepPreferences.FindWhat = "(?i)[.][A-Z]*?[.]" но не понимаю как это написать.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Дальше дописать:
Код:
myInDesign.ChangeGrepPreferences.AppliedCharacterStyle = "StyleName"
myCell.changeGrep

где myCell — область поиска-замены.
 

ARGOS

Участник
Сообщения
64
Реакции
0
Ответ: Если есть вопросы по скриптам

Здравствуйте. Пишу скрипт, в функционал которого должно входить копирование текста из одного фрейма в другой. Как правильно прописать операцию копирования/вставки? Простите, если вопрос глупый, но меня он поставил в тупик :(

Код вида (см. ниже) не работает.

PHP:
 app.activeDocument.pageItems.item("istochnik").parentStory.copy();
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Сначала надо выделить нужный текст:
Код:
app.activeDocument.pageItems.item("istochnik").parentStory.select();
Потом скопировать:
Код:
app.copy();
Потом выделить то, куда это надо вставить:
Код:
app.activeDocument.destinationTextFrame.insertionPoints[0].select()
И, наконец, вставить:
Код:
app.paste();

Есть еще способ, работающий с более высокой скоростью — через contents:
Код:
myTextFrame1.contents = myTextFrame2.contents;
Но в этом случае не сохранится форматирование текста.
 
  • Спасибо
Реакции: Klara

ARGOS

Участник
Сообщения
64
Реакции
0
Ответ: Если есть вопросы по скриптам

Eugenyus, спасибо что помогли. В этой области скриптописания у меня был пробел :(
 

ARGOS

Участник
Сообщения
64
Реакции
0
Ответ: Если есть вопросы по скриптам

При выделении фрейма с текстом, маркированным в Frame Lable именем "Frame #1" нужно выполнить некую операцию. Если фрейм маркирован другим именем - "Отмена". Никак не получается сделать запрос на содержимое во Frame Lable.

PHP:
if (app.selection[0].item("Frame #1")){
 alert("Frame #1");
 }
 else {
 alert("Выделен не Frame #1");
 }
 

boriskasmoscow

15 лет на форуме
Сообщения
343
Реакции
410
Ответ: Если есть вопросы по скриптам

Есть же для этих целей свойство label, почему не пользуетесь?
var myStr = app.selection[0].label;
if(myStr == "Frame #1") alert("Frame #1") //и т.д
и в предыдущем Вашем вопросе надо было пользоваться методом move(), тогда форматирование сохраняется.
 

ARGOS

Участник
Сообщения
64
Реакции
0
Ответ: Если есть вопросы по скриптам

Спасибо. А форматирование сохраняется и при том способе, что был посоветован выше. Но попробую разобраться и с move()
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Скорость при использовании move() (при переносе) или duplicate() (при дублировании) в разы выше, чем при использовании команд app.copy() (app.cut()) и app.paste().
 
Статус
Закрыто для дальнейших ответов.