אינדיזיין תיקון היפר קישורים במסמכים רבים

  • הוסף לסימניות
  • #1
שלום וברכה
יש לי קבצים רבים עם קישורים לאתר, כעת הדומיין הוחלף, וצריך להחליף הרבה קישורים בהרבה קבצים,
מחפש דרך מהירה
ניסתי לבנות סקריפט בקלוד
והוא לא עובד לי טוב
 
  • הוסף לסימניות
  • #2
זה הסקריפט
קוד:
#target "indesign"
#targetengine "GeminiLinksFixer_Final_SystemPaste"

function main() {
    if (app.documents.length === 0) return;

    var doc = app.activeDocument;
    var links = doc.hyperlinks;
    var data = [];
    var memoryFile = new File(Folder.myDocuments + "/InDesign_Links_Memory.json");
    var memory = {};

    if (memoryFile.exists) {
        memoryFile.open("r");
        var content = memoryFile.read();
        memoryFile.close();
        if (content != "") { try { memory = eval("(" + content + ")"); } catch(e) {} }
    }

    for (var i = 0; i < links.length; i++) {
        try {
            var dest = links[i].destination;
            if (dest && dest.hasOwnProperty("destinationURL")) {
                var name = (links[i].source instanceof HyperlinkTextSource) ?
                           links[i].source.sourceText.contents : links[i].name;
                var currentUrl = dest.destinationURL;
                var targetUrl = (memory[name]) ? memory[name] : currentUrl;
                data.push({ text: name, url: targetUrl, originalUrl: currentUrl, link: links[i] });
            }
        } catch(e){}
    }

    // פונקציה לשליפת טקסט מהלוח באמצעות PowerShell (עוקף את אינדיזיין)
    function getSystemClipboard() {
        var psScript = 'powershell -command "Get-Clipboard"';
        try {
            var result = app.doScript(psScript, ScriptLanguage.VISUAL_BASIC);
            // בשימוש ב-doScript עם VB על ווינדוס הוא מחזיר את פלט המערכת
            if (!result) {
                // שיטה חלופית אם הראשונה לא מחזירה ערך בגרסה שלך
                var cmd = 'powershell -command "Get-Clipboard" > "%temp%\\clip.txt"';
                app.doScript('Set shell = CreateObject("WScript.Shell"): shell.Run "cmd.exe /c ' + cmd + '", 0, True', ScriptLanguage.VISUAL_BASIC);
                var f = new File(Folder.temp + "/clip.txt");
                if (f.exists) {
                    f.open("r");
                    var txt = f.read();
                    f.close();
                    return txt;
                }
            }
            return result;
        } catch (e) { return ""; }
    }

    var win = new Window("palette", "תיקון קישורים - הדבקה נקייה");
    win.orientation = "column";
    win.spacing = 5;
    win.margins = 15;

    var mainGroup = win.add("group {orientation: 'row', alignChildren: ['right', 'fill']}");
    var fieldsGroup = mainGroup.add("group {orientation: 'column', spacing: 2}");

    var uiRows = [];
    for (var r = 0; r < 12; r++) {
        var row = fieldsGroup.add("group");
       
        var btnPaste = row.add("button", [0, 0, 50, 22], "הדבק");
        var edt = row.add("edittext", [0, 0, 380, 22], "");
        var btnSel = row.add("button", [0, 0, 40, 22], "בחר");
        var txtLabel = row.add("statictext", [0, 0, 300, 22], "");
       
        btnSel.onClick = (function(e) {
            return function() { e.active = true; e.selection = [0, e.text.length]; };
        })(edt);

        btnPaste.onClick = (function(e) {
            return function() {
                var clipText = getSystemClipboard();
                if (clipText && clipText != "") {
                    // ניקוי רווחים וירידות שורה מיותרות מהקצוות
                    e.text = clipText.replace(/^\s+|\s+$/g, "");
                    e.active = true;
                }
            };
        })(edt);

        uiRows.push({row: row, txtLabel: txtLabel, edt: edt, dataIdx: -1});
    }

    var sb = mainGroup.add("scrollbar", [0, 0, 20, 300]);

    function refresh(start) {
        var startIdx = Math.floor(start);
        for (var k = 0; k < uiRows.length; k++) {
            var idx = startIdx + k;
            if (idx < data.length) {
                uiRows[k].txtLabel.text = data[idx].text.substring(0, 45);
                uiRows[k].edt.text = data[idx].url;
                uiRows[k].dataIdx = idx;
                uiRows[k].row.visible = true;
            } else { uiRows[k].row.visible = false; }
        }
    }

    sb.onChanging = function() { refresh(this.value); };
    sb.minvalue = 0;
    sb.maxvalue = Math.max(0, data.length - uiRows.length);

    var btnSave = win.add("button", undefined, "עדכן ושמור");
    btnSave.alignment = "center";
    btnSave.onClick = function() {
        for (var j = 0; j < data.length; j++) {
            for(var i=0; i<uiRows.length; i++) {
                if(uiRows[i].dataIdx === j) data[j].url = uiRows[i].edt.text;
            }
            if (data[j].url !== data[j].originalUrl) {
                try { data[j].link.destination.destinationURL = data[j].url; } catch(e){}
            }
            memory[data[j].text] = data[j].url;
        }
        memoryFile.open("w");
        memoryFile.write(memory.toSource());
        memoryFile.close();
        alert("נשמר!");
    };

    refresh(0);
    win.show();
}

main();
 
  • הוסף לסימניות
  • #3
אני לא מחפש לתקן דווקא את הסקריפט הזה.
אלא פיתרון יעיל.
גם בתשלום
 
  • הוסף לסימניות
  • #4
מישהו יודע אם אני בפורום הנכון?
 
  • הוסף לסימניות
  • #6
מישהו יודע אם אני בפורום הנכון?
לא הבאת מספיק מידע, לא קובץ ניסיון.
ואנחנו מעמדים, לא מתכנתים.
בכל אופן, המלצתי תנסה בבינות אחרות, למשל ג'מיני.
המלצה נוספת - להשקיע טיפה יותר בפרומפט, ועדיף לתכנן בעצמך את דרך הפעולה של הסקריפט ולבקש מהבינה ליישם אותו.
 

פרוגבוט

תוכן שיווקי
פרסומת

פוסטים חדשים שאולי לא קראת....

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

מעכשיו, תהיו הראשונים לקבל את כל העדכונים, החדשות, ההפתעות בלעדיות, והתכנים הכי חמים שלנו בפרוג!

לוח מודעות

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה