【发布时间】:2019-12-03 20:34:04
【问题描述】:
我是 InDesign 脚本的初学者,想帮助自己进行调试,但我的尝试似乎碰壁了。希望有人有一些见解,可以帮助我前进。
我正在做一个小项目,它遍历一些选定的表,将 3 个表放入一个数组/变量中(完成),然后遍历这些表的内容以查找 GREP 匹配并将它们存储在数组/变量(用于进一步的用途,我现在不会涉及)
此时我的主要目标: 看看 .findGrep(); 到底是什么文本字符;函数在 ExtendScript Toolkit 应用程序的 Javascript 控制台中捕获并显示它们。
到目前为止,这里有一些过程,包括尝试过的代码和其他人的建议。 (我所有尝试使用这些都失败了......为什么我现在在这里......为什么这很长;我很抱歉)
初步尝试。 var myTables = []; (在数据浏览器中显示 [object Table]、[object Table]、[object Table] 的值
var myFinds = [];
var myTest = [];
var myCharacters = [];
app.findGrepPreferences = null;
app.findGrepPreferences.findWhat = "\"";
for (x = 0; x < myTables.length; x++) {
var myFinds = myTables[x].findGrep();
$.writeln(myFinds);
};
这段代码的注意事项:因为不是每个表都有 findWhat 中的字符,所以有时在这个循环中 myFinds 什么都没有,但是当它确实有东西时,它会在控制台中显示这个 [object Character],[object Character ],[对象字符]
所以有人 (firstHelp) 给了我这个:而且它没有用...在 .contents.toString() 上抛出错误; *“未定义不是一个对象”,我想,“好吧,是的,我有时在循环中看到 myFinds 没有任何内容......稍后会详细介绍”
var stringArray = [];
for( var n=0; n<myFinds.length; n++ ) {
stringArray[n] = myFinds[n].contents.toString();
};
$.writeln(myFinds.join("\r"));
代码改造 放弃了 $.writeln(myFinds);在循环内并尝试这样做是为了将 Grep 发现收集到可以在循环外处理的变量/数组中。
for (x = 0; x < myTables.length; x++) {
$.writeln(myTables[x].cells.firstItem().texts[0].contents[0]);
myFinds.push(myTables[x].findGrep());
};
$.writeln(myFinds);
ExtendScript Toolkit 控制台现在为 myFinds 显示此内容:
*myFinds = [Array], [object Character], [object Character], [object...
+ (object symbol) 0 =
+ (object symbol) 1 = [object Character], [object Character], [object Character]
+ (object symbol) 2 =
+ (object symbol) _proto_ =*
*再次尝试了 .contents.toString();在 myFinds 上,仍然出现相同的错误,“未定义...”,包括在数组中明显有内容时定位数组。
**所以我得到了这个提示......(但没有有用的代码可以应用于我已经拥有的东西)
“您正在处理与文本混合的数组。
所以你必须检查结果数组的每个项目是否是文本 或其他文本数组。
如果是数组,则循环该数组。” 后来这段代码应该“扁平化”我的数组...... a = [].concat.apply([],a); 像这样用 myFinds 替换 a,myFinds = [].concat.apply([],myFinds);什么都没做。数组及其内容在控制台中没有显示任何变化......我不知道如何遍历数组中这个数组的每个项目,找出它是文本还是另一个数组,然后将其真实内容显示给控制台。
真的...我需要在一个数组上运行多少个循环和 if/thens 等才能在控制台中显示其实际内容?但是我知道我很难将我想要的每一个小步骤分解到其微小的脚本粒度,因此我的无知经常阻碍我。如上所述,我欢迎任何建议/提示让我更接近我的“**主要目标”。谢谢
【问题讨论】:
标签: adobe-indesign