[ID CC-CC2021] Скрипт для гиперссылки на URL из клипборда

LeonidB

Их бин
Топикстартер
10 лет на форуме
Сообщения
2 469
Реакции
1 528
Подскажите, пожалуйста, знает ли кто-нибудь (или можно ли написать, если несложно) скрипт, который бы выделенному тексту цеплял гиперссылку (URL) с заданными заранее параметрами, а в качестве назначения брал адрес из клипборда (если в клипборде ничего нет или неподдерживаемые данные, то либо выдавал бы ошибку, либо просто ничего не делал)?

Вот так:
Hyperlink1.jpg Hyperlink2.jpg Hyperlink3.jpg
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Можно. Обожди немного, если не суперсрочно.
 
  • Спасибо
Реакции: LeonidB

LeonidB

Их бин
Топикстартер
10 лет на форуме
Сообщения
2 469
Реакции
1 528

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
JavaScript:
function clipboard2hyperlink () {
    if (!app.documents.length) {
        return false;
    }
    var doc = app.activeDocument;
    if (app.selection.length != 1 || !app.selection[0].hasOwnProperty('characters')) {
        return false;
    }
    var text = app.selection[0].getElements()[0];
    var shadow = doc.pages[0].textFrames.add(undefined, undefined, undefined, {geometricBounds: [0,0,1,1]});
    shadow.parentStory.insertionPoints[0].select();
    app.paste();
    if ((/[\w]/).test(shadow.parentStory.contents.toString())) {
        while (hiperlinkSources = text.findHyperlinks(), hiperlinkSources.length) {
            hiperlinkSources[hiperlinkSources.length - 1].remove();
        }
        var source = doc.hyperlinkTextSources.add(text);
        var dest = doc.hyperlinkURLDestinations.add(shadow.parentStory.contents.toString());
        var hyperlink = doc.hyperlinks.add(source, dest);
        if (charStyle = doc.characterStyles.itemByName('Hyperlink'), charStyle.isValid) {
            source.appliedCharacterStyle = charStyle;
        }
    }
    shadow.remove();
}

app.doScript(clipboard2hyperlink, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT, 'Hyperlink by Clipboard');
 

LeonidB

Их бин
Топикстартер
10 лет на форуме
Сообщения
2 469
Реакции
1 528
Супер!
'cooll)' 'alil''dans))'