[ID CC-CC2021] Кто-то может сделать скриптик на поиск битых ссылок?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
В документе тыщща с чем-то гиперлинков. Некоторые из них ссылаются не на текст, который в них сидит, а на исходный ворд документ (свойство destination = file). Вот их надо отловить и исправить на содержащийся в них текст (это может быть и почт. адрес). Или хотя бы собрать номера страниц, где сидят дефективным гиперлинки.
Бюджет - 200 р.
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Может не точно описал. Плохие линки ссылаются не на текст урла, который в них сидит. То есть вместо ссылки на адрес www.google.com, указанный в тексте, свойства линка оказываются file и указано destination D:\\CreativeCloud\1.doc".
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Код:
#target indesign

function main () {
    if (app.documents.length < 1) {
        return false;
    }
    var doc = app.activeDocument;
    for (var i = 0; i < doc.hyperlinks.length; i++) {
        if (doc.hyperlinks[i].destination.hasOwnProperty('destinationURL') && doc.hyperlinks[i].destination.destinationURL.toString().indexOf('file:') == 0) {
            var newURL = doc.hyperlinks[i].source.sourceText.contents.toString();
            var newDest = doc.hyperlinkURLDestinations.add(newURL);
            doc.hyperlinks[i].destination = newDest;
        }
    }
}

main();

Применять с осторожностью.
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Код:
#target indesign

function main () {
    if (app.documents.length < 1) {
        return false;
    }
    var doc = app.activeDocument;
    for (var i = 0; i < doc.hyperlinks.length; i++) {
        if (doc.hyperlinks[i].destination.hasOwnProperty('destinationURL') && doc.hyperlinks[i].destination.destinationURL.toString().indexOf('file:') == 0) {
            var newURL = doc.hyperlinks[i].source.sourceText.contents.toString();
            var newDest = doc.hyperlinkURLDestinations.add(newURL);
            doc.hyperlinks[i].destination = newDest;
        }
    }
}

main();

Применять с осторожностью.
Спасибо, сейчас попробую. Куда забросить денюшку? Проще на номер сберкарты.
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Я еще добавил подкраску ссылок в синий цвет
Код:
doc.hyperlinks[i].source.sourceText.appliedCharacterStyle = doc.characterStyles.item("hyper");
Еще бы исключить из перебора внутритекстовые ссылки (которые в содержании образуются, типа Linked to Page). Тоже покрасились (хотя я потом задал красить только ссылки на не шаблонных страницах и с номером больше 5).