Help

The Community will be temporarily unavailable starting on Friday February 28. We’ll be back as soon as we can! To learn more, check out our Announcements blog post.

Is it possible to put a button within a function?

Topic Labels: Scripting extentions
3431 4
cancel
Showing results for 
Search instead for 
Did you mean: 

I’m pretty new to JS, but trying to learning all the time.
Some of the first code I wrote in the scripting blog has gotten supper hard to update, so thought to experiment to write small modules to keep divide up the code.

However it seems I can’t put buttons into functions?

let test = function () {

    let firstClick = await input.buttonsAsync(
    'What do you want to do?',
    [ 
    {label: 'Check todays rate', value: 'today', variant: 'danger'},
    {label: 'Convert currency', value: 'convert', variant: 'primary'}
    ]
    )
}

this gives me an error saying ‘SyntaxError: await is only valid in async function’
does theis mean my button can only be used in the global scope?

4 Replies 4

You can put buttons in functions. You just need to make the function an async function and await it when you call it.

let test = async function () {
  let firstClick = await input.buttonsAsync( ...
}

await test();

Sorry for the late reply, but didn’t completely understand it until I dug a bit deeper in JS and Async Await functions. Now it makes perfect sense.

THANK YOU FOR THIS :slightly_smiling_face: I was pulling my hair out and now have it working!

cameronangeli
4 - Data Explorer
4 - Data Explorer

Hey All. Not sure if anyone has run into this, but it seems like use of 'variant' and 'varient' throwing inconsistent errors in my code. For example:  

This works: 

let q1Answer1 = {label:"One",value:1,varient:'primary'};
let q1Answer2 = {label:"Two",value:2,varient:'primary'};
question1 = await input.buttonsAsync("Question?",[q1Answer1,q1Answer2,])
 
This does not work: 
let q1Answer1 = {label:"One",value:1,variant:'primary'};
let q1Answer2 = {label:"Two",value:2,variant:'primary'};
question1 = await input.buttonsAsync("Question?",[q1Answer1,q1Answer2,])
 
This works: 
question1 = await input.buttonsAsync("Question?",[{label:"One",value:1,variant:'primary'},{label:"Two",value:2,variant:'primary'}])
 
This does not work: 
question1 = await input.buttonsAsync("Question?",[{label:"One",value:1,varient:'primary'},{label:"Two",value:2,varient:'primary'}])
 
Why is that happening?