Script de Indesign para automatizar GREP Buscar/Reemplazar

Esta pregunta se deriva de mi pregunta anterior sobre el tema de GREP y la funcionalidad de buscar/reemplazar de InDesign. Para resumir la situación, mi documento de InDesign tiene 3 estilos de carácter aplicados al texto en varios lugares: bold, italic, bolditalic. Los nombres de esos estilos de carácter se explican por sí mismos.

Quiero escribir un script que busque texto diseñado con cualquiera de los estilos de caracteres anteriores y los envuelva en una etiqueta HTML adecuada. Por ejemplo, quiero que todo el estilo del texto boldesté envuelto en las <b>...</b>etiquetas, y así sucesivamente. En mi pregunta anterior, la respuesta aceptada por Jongware hace un excelente trabajo al explicar cómo realizar una búsqueda/reemplazo manual usando GREP. Ahora deseo automatizar el proceso escribiendo un script para manejarlo. Aquí está mi primer intento:

app.findGrepPreferences=app.changeGrepPreferences=null;
app.findGrepPreferences.appliedCharacterStyle="bold";
app.changeGrepPreferences.changeTo="<b>$0</b>";
app.activeDocument.changeGrep();

Esto funciona excepto que solo envuelve el primer carácter del texto afectado en las etiquetas dadas y borra el resto. Así, un texto como "Este es un texto de ejemplo ". cambiado a "Este es un texto electrónico ". ¿Qué estoy haciendo mal?

Respuestas (1)

No importa. Lo hice funcionar con solo una línea adicional de código. Poniendo el código modificado aquí para que cualquier otra persona se beneficie:

app.findGrepPreferences=app.changeGrepPreferences=null;
app.findGrepPreferences.findWhat=".+";
app.findGrepPreferences.appliedCharacterStyle="bold";
app.changeGrepPreferences.changeTo="<b>$0</b>";
app.activeDocument.changeGrep();

La línea adicional que faltaba en mi fragmento original es la segunda:

app.findGrepPreferences.findWhat=".+";

Gracias.

¿Cómo itero a través de cada carácter coincidente y aplico una condición y luego la reemplazo?