Dec 28, 2022 03:15 PM - edited Dec 28, 2022 03:21 PM
I have a table that's thousands of lines long, with a column called "Formula" which contains small string expressions like:
amount = salary * 0.11;
What I'm trying to do is run this string in my code, so that it updates the `amount` variable based on which line I select. However, I am running into an error when I try to run the string as code.
This is my code, which is able to compile with the correct answer in other online compilers. However, when I run this in my automation script (specifically the line where I call `func()`) I receive TypeError: func is not a function.
let code = "amount = salary * 0.11;";
// Define the function with the desired arguments
let func = new Function('salary', code);
// Call the function with the desired argument values
Dec 28, 2022 03:30 PM
eval() is not available in automation scripts. This was a specific choice that Airtable made when implementing automation scripts.
Dec 28, 2022 03:33 PM
Thanks for your quick reply. I understand this, and this is why I’m attempting to use a function constructor instead to accomplish the same thing. Is this explicitly forbidden, like using eval() is? I feel like it shouldn’t be
Dec 28, 2022 03:44 PM
I understand this, and this is why I’m attempting to use a function constructor instead to accomplish the same thing. Is this explicitly forbidden, like using eval() is? I feel like it shouldn’t be
It's the same concept. Airtable doesn't like automation scripts to run code generated at run-time. If you feel that the behavior should be different, you can submit a feature request to Airtable support.
Dec 28, 2022 03:46 PM
If you do not need the code to run automatically, you can run your code from a button in Scripting Extension. Scripting extension does not have the same limitations as automation scripts.
Dec 28, 2022 03:48 PM