Custom functions with arguments

Tags: #<Tag:0x00007efc6520ee38>

Hi,

I am using HyberFormulas. In this, I am trying to do some calculations using custom functions.

I want to pass arguments (another cell value) in custom functions to perform calculations. Is there any way to achieve this?

Ex: =calculate("=A1") + 3

Hi @jubilee.mohamed

Hereā€™s a tutorial about how to create custom functions with HyperFormula:

https://hyperformula.handsontable.com/guide/custom-functions.html#add-a-custom-function

Hi @adrian.szymanski,

if i pass any value directly to custom function, i can get that value in ā€œast.argsā€. so i can proceed further. But I am passing argument as a named expression in custom functions. i am not able to get the value of named expression in ā€œast.argsā€.

Could you help on this scenario. https://jsfiddle.net/x1e4zauw/30/

image

Hi @jubilee.mohamed

I have consulted this with my colleague and it turned out that this is the issue reported here:

I will get back to you next week with more information on this.

Sure. thank you @adrian.szymanski

Hi @jubilee.mohamed

I just received more information on this issue.

This is a custom function that accepts a parameter. Itā€™s still in the development stage, and it will be published in the next version of our documentation, but you may want to look at it and implement your custom function in a similar way: https://codesandbox.io/s/github/handsontable/hyperformula-demos/tree/feature/issue-779/custom-functions

Does it solve your problem?

Hi @adrian.szymanski,

Sorry for the delay response. Thanks for the solution on custom functionā€™s argument related issue.

I have verified this code in all way. It returns cell reference and named expression value. Thanks.

But when i use multiple params using comma it returns error.

Ex. =GREET(A1) working
=GREET(A1,12345) working
=GREET(A1,ā€˜PRODUCTā€™) It is not working.

i have using this for multiple param,

GreetingsPlugin.implementedFunctions = {
GREET: {
method: ā€œgreetā€,
parameters: [{ argumentType: ā€œSTRINGā€ }, { argumentType: ā€œSTRINGā€ }]
}
};

Hi @jubilee.mohamed

Iā€™ve asked our Hyperfomula developer for an advice on this. Iā€™ll get back to you when I have more info.

1 Like

Sure. thank you @adrian.szymanski

Hi @jubilee.mohamed

HyperFormula accepts string parameters in double-quotes. Try this:

=GREET(A1, "PRODUCT")

Hi @adrian.szymanski,

I missed to pass multiple params.

ex:
greet(ast, state) {
return this.runFunction(
ast.args,
state,
this.metadata(ā€œGREETā€),
(username,param) => {
if (!username) {
return new CellError(ā€˜VALUEā€™);
}

    return `šŸ‘‹ Hello, ${username}!`;
  }

It is working and returns value as expected. It is helped me a lots.

Thank you @adrian.szymanski

Hi @jubilee.mohamed

Thatā€™s great. Iā€™m glad that we could help!

1 Like