Error 45: Object is invalid when using JS reading groups
We have a .NET application which calls a Javascript function via COM in Adobe Illustrator 2024 V28.6.
Sometimes it works, but sometimes we get an error. Everything worked in the old Adobe Illustrator 2015.
Sometimes we get this error: Object is invalid
-> getTextFrames(group.textFrames, textFrames);
See last lines in the JS code below. The group object is invalid!
The script errors only occur when the script is called programmatically. When the script is called via the Illustrator interface or via the ExtentedScript Toolkit, the scripts run without any problems.
var defaultNumberDecimalSeperator = "##defaultNumberDecimalSeperator##";
var newSeparator = "##newSeparator##";
var layerName = "##layerName##";
var doc = app.activeDocument;
var myLayer = doc.layers.getByName(layerName);
replaceDecimalSeparator(myLayer, newSeparator)
function replaceDecimalSeparator(layer, newSeparator) {
var textFrames = getAllTextFrames(layer);
for (var i = 0; i < textFrames.length; i++) {
var myTextFrame = textFrames[i];
var myContent = myTextFrame.contents;
var index;
// Alle Dezimaltrenner im Textrahmen ersetzen
do {
index = myContent.indexOf(defaultNumberDecimalSeperator);
if (index === -1) {
break;
}
myTextFrame.characters[index].contents = newSeparator;
myContent = myTextFrame.contents; // Inhalt nach der Änderung neu laden
} while (index !== -1);
}
}
// Rekursive Funktion zum Ermitteln aller TextFrames in der Ebene
function getAllTextFrames(myLayer) {
var myTextFrames = [];
getTextFrames(myLayer.textFrames, myTextFrames);
getTextFramesInGroups(myLayer.groupItems, myTextFrames);
return myTextFrames;
}
function getTextFrames(frames, myTextFrames) {
for (var i = 0; i < frames.length; i++) {
myTextFrames.push(frames[i]);
}
}
function getTextFramesInGroups(groups, mytextFrames) {
var myGroup;
for (var i = 0; i < groups.length; i++) {
myGroup = groups[i];
getTextFrames(myGroup.textFrames, mytextFrames);
getTextFramesInGroups(myGroup.groupItems, mytextFrames);
}
}