簡體   English   中英

Indesign Slug Text 變量腳本

[英]Indesign Slug Text variable script

我正在嘗試提出一個可以加載到 InDesign 腳本面板中的腳本,但是當您打開給定文檔時它也會運行。

我的文檔被命名為"REF_ClientRef" ,通常看起來像4294_GEN1

我有兩個名為REFClientRef的文本變量,它們代表文件名的第一部分和第二部分。

如何使用文件名的第一部分更新文本變量 REF 並使用文件名的第二部分更新ClientRef

這是完成這項工作的兩個腳本。

主腳本創建或更改變量:

try { var doc = app.activeDocument } catch(e) { exit() }

if (!doc.saved) exit();

// get a name of the current file without .indd
var doc_name = doc.name.replace('.indd', '');

// get a part of the file name before '_' and save it into the variable
var ref = doc_name.split('_')[0];
update_variable('REF', ref);

// try to get a part of the file name after '_' and save it into the variable
try {
    var client = doc_name.split('_')[1];
    update_variable('ClientRef', client);
} catch (e) {}

// function that changes an existed variable or creates new one
function update_variable(var_name, var_contents) {
    try {
        var variable = doc.textVariables.itemByName(var_name);
        variable.variableOptions.contents = var_contents;
    }
    catch(e) {
        var variable = doc.textVariables.add();
        variable.name = var_name;
        variable.variableType = VariableTypes.CUSTOM_TEXT_TYPE;
        variable.variableOptions.contents = var_contents;
    }
}

您可以隨時從腳本面板照常運行它。

第二個腳本使 InDesing 在您每次打開任何文檔時自動運行主腳本:

#targetengine "onAfterOpen"

app.eventListeners.add('afterOpen', main);

function main() {
    app.doScript(File('c:/path_to_the_main_script/main_script.jsx'));
}

您可以手動運行第二個腳本,也可以將其保存到特殊文件夾中。 在 Windows 上,它看起來像這樣:

c:\Users\#username#\AppData\Roaming\Adobe\InDesign\#version#\en_GB\Scripts\Startup Scripts\

它可能因您的版本、區域設置、操作系統等而有所不同。實際上,它只是一個名稱為“啟動腳本”的文件夾,位於您的腳本的 rest 文件夾旁邊(“腳本面板”)。 每當您啟動 InDesign 時,此文件夾中的所有腳本都會自動運行。

而且我認為將主腳本限制為僅針對特定文件(例如特定文件名)或文件夾運行是一個好主意。 這取決於您的工作流程。 如果你能制定一條規則,我可以嘗試展示它是如何完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM