Skip to main content
Participating Frequently
July 14, 2021
質問

AFX Script Problem Visual Studio Code

  • July 14, 2021
  • 返信数 2.
  • 1979 ビュー

Hi, 

i recently started scripting and wrote a script in VS Studio for After Effects, which works fine when i run it from Visual Studio. But when i save it and run the script from After Effect it gives me an error message: "unable to execute at line 20..."  

which is a function in my script. everything before gets executed. 

I have Variables (a,b)  in my function because i am looking for several Objects meaning CompItem, FootageItem, Folderitem where I'm looking for specific names as a string. 

The Function looks like that: 

 

function graballItems(a, b) {
  var proj, curItem, itemTotal, ItemAry;

  proj = app.project;

  itemTotal = proj.numItems;

  ItemAry = new Array();

  for (var i = 1; i <= itemTotal; i++) {
    curItem = proj.item(i);

    if (curItem instanceof b && curItem.name.indexOf(a) !== -1) {
      ItemAry = curItem;
    }
  }
  return ItemAry;
}

// And i use it like that:

var myCompBeauty = graballItems("CAN_ENDTAG_PRE", CompItem);

 

 

But strange though, that it is working from VS Studio. 

Does anybody know why the error message appears? 

 

Cheers 

Martin 

このトピックへの返信は締め切られました。

返信数 2

Mathias Moehl
Community Expert
Community Expert
July 15, 2021

The line "ItemAry = new Array()" suggests that you want to return an array of the found items. But in the line

ItemAry = curItem;

you replace your array with a single item.

If you want to grab all items, you most likely want to do

ItemAry.push(curItem)

instead.

 

 

 

 

Mathias Möhl - Developer of tools like BeatEdit and Automation Blocks for Premiere Pro and After Effects
mmueller2作成者
Participating Frequently
July 15, 2021

First of all, thank you both for your quick reply. 

I tried to implement the try and catch statement but without any sucess. 

I implemented the push item command but recognized that i only need one item not an array so i changed it to just get the curitem. But still the same error. 

Last thing i wanted to try to set an alert line by line to check where the code breaks exactly. 

Strange enough the script works like that: 

 

function graballItems (a,b){
    alert("OK");
    var proj,curItem,itemTotal,MyItem;
    proj = app.project;
    itemTotal = proj.numItems
    for (var i =1i<= itemTotali++){
        curItem = proj.item(i);
        if (curItem instanceof b && curItem.name.indexOf(a) !== -1  ){
            MyItem = curItem;
            
        }
       
        }
    return MyItem;
    
}
 
But of course i don't want to have an alert 10 times while the script is running. 
 
Mathias Moehl
Community Expert
Community Expert
July 15, 2021

what happens, if you set a breakpoint in the debugger instead of the alert and go through the code execution step by step?

And just to be sure: Did you check if your script behaves as you want when there is no item found (and hence an empty array is returned)?

 

Mathias Möhl - Developer of tools like BeatEdit and Automation Blocks for Premiere Pro and After Effects
Justin Taylor-Hyper Brew
Community Expert
Community Expert
July 14, 2021

Just tested and it works for me after commenting out that line. Try putting it in a try catch and see if you can get any more info on the error.