Cannot use a macro variable inside a loop script

I’m trying to get use a macro variable inside a script that is inside a loop
when I try to use it it always shows up an error as
Error in executeScript code: data is not defined

the script is the following

{
“Name”: “Scrapper”,
“CreationDate”: “2022-3-12”,
“Commands”: [
{
“Command”: “open”,
“Target”: “html”,
“Value”: “”,
“Description”: “”
},
{
“Command”: “pause”,
“Target”: “1000”,
“Value”: “”,
“Description”: “”
},
{
“Command”: “”,
“Target”: “”,
“Value”: “”,
“Description”: “”
},
{
“Command”: “store”,
“Target”: “54”,
“Value”: “i”,
“Description”: “”
},
{
“Command”: “while_v2”,
“Target”: “${i}<=90”,
“Value”: “”,
“Description”: “”
},
{
“Command”: “sourceExtract”,
“Target”: “*@${i}”,
“Value”: “data”,
“Description”: “”
},
{
“Command”: “executeScript”,
“Target”: "function buy(info) {\n var result = false;\n \tvar cost = 0;\n var itemcost = 0;\n var part = ";\n var extra = “;\n if ( info.includes(data-id)) {\n part = info.substring(\n info.lastIndexOf(‘Costs ‘) + 1, \n info.lastIndexOf(’ refined’)\n );\n if ( part.includes(‘key’)) {\n extra = str.substring(\n part.lastIndexOf(’, ‘) + 1, \n part.lastIndexOf(’ ')\n );\n itemcost = itemcost + 70 + parseFloat(extra);\n }\n if ( part.includes(‘keys’)) {\n itemcost = 10000;\n }\n if (info.includes(‘Mercenary’) || info.includes(‘Freelance’) || info.includes(‘Commando’) ) {\n cost = cost + 2.66;\n } else if (info.includes(‘Civilian’) && info.includes(‘Factory’) ) {\n cost = cost + 45;\n }\n \tif (info.includes(‘Specialized Killstreak’)) {\n cost = cost + 35;\n }\n \tif (info.includes(‘Festivized’)) {\n cost = cost + 20;\n }\n \tif (info.includes(‘Pizza’) || info.includes(‘Clover’) || info.includes(‘Bank’)) {\n if (info.includes(‘Minimal’)) {\n cost = cost + 18;\n } else if (info.includes(‘Factory’)) {\n cost = cost + 65;\n }\n }\n \tif (info.includes(‘Cabin’) || info.includes(‘Polar’) || info.includes(‘Bomber’) || info.includes(‘Geometrical’) || info.includes(‘Hazard’)) {\n if (info.includes(‘Minimal’)) {\n cost = cost + 7;\n } else if (info.includes(‘Factory’)) {\n cost = cost + 35;\n }\n }\n if (cost >= itemcost) {\n result = true;\n }\n }\n \n return result;\n}\n\n//boolean to approve or not\nvar c = buy(${data}.toString());\n\nreturn c;\n”,
“Value”: “c”,
“Description”: “”
},
{
“Command”: “echo”,
“Target”: “${data}”,
“Value”: “”,
“Description”: “”
},
{
“Command”: “executeScript_Sandbox”,
“Target”: “return Number(${i})+1”,
“Value”: “i”,
“Description”: “”
},
{
“Command”: “end”,
“Target”: “”,
“Value”: “”,
“Description”: “”
}
]
}

“Command”: “sourceExtract”,
“Target”: “*@${i}”,

use xpath command