我有一个脚本(我没有编写),其中包含一个app.addEventListener('afterOpen', addVariables);
事件(addVariables 是函数的名称)。
我把app.addEventListener('afterSave', addVariables);
它改成我想要的那样工作,除了它正在创建一个“永无止境”的循环。
基本上发生的事情是脚本提取用户名(即:Tia)并将其作为可变文本添加到 InDesign CC 中的粘贴板上。使用“afterOpen”命令,只要我打开文档,名称就会更新;这违背了脚本的目的,因为我想知道谁最后保存了文档,而不是最后打开文档的人(永远是我)。该脚本与“afterSave”命令一起正常工作,因为它显示了最后保存它的人的姓名;但是,我现在创建了一个新问题,即每当有人尝试保存文档时,脚本都会不断循环*。
所以,我的问题是:我可以告诉 eventListener 每个文档只运行一次吗?
我不熟悉 javascript——我对 applescript 有相当的了解。
谢谢你的帮助!
iMac 运行 osx 10.8.4 • Adobe InDesign CC • 使用 Adobe ExtendScipt Toolkit 进行编辑
*它会循环,因为一旦有人保存文档,脚本就会运行并更改文本变量,InDesign(正确地)将其记录为对文档的更改。所以现在文档被标记为“未保存”(文档名称旁边有一个星号)。如果我按 command+s 再次将其保存以“清除”星号,则 eventListener 会选择 afterSave 命令并再次更新文档,而 InDesign 会选择更改并将其标记为未保存...所以您可以看看我所说的循环是什么意思。您可以告诉文档关闭(command+w)并告诉它在关闭之前保存,它会这样做,然后关闭。但是,我宁愿只保存文档一次,变量文本更新,然后如果在该文档仍处于打开状态时对该文档进行任何进一步更改,脚本将不会再次运行。显然,我希望脚本在每个新文档上运行一次。