[英]Indesign Slug Text variable script
我正在嘗試提出一個可以加載到 InDesign 腳本面板中的腳本,但是當您打開給定文檔時它也會運行。
我的文檔被命名為"REF_ClientRef"
,通常看起來像4294_GEN1
。
我有兩個名為REF
和ClientRef
的文本變量,它們代表文件名的第一部分和第二部分。
如何使用文件名的第一部分更新文本變量 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.