Hi @Sharon_Visser, there is no way currently to prevent a button from getting clicked. So if you have a button in your table, users are able to click it.
The solution for this would be to not use a button, but a checkbox which triggers an automation with the script. It’s possible to set field permissions on a checkbox.
I can help you change the script accordingly if you post it here (shouldn’t be too much of a big deal).
Cheers,
Rupert
@Sharon_Visser:
One thing to note is that you don't need to use scripting at all for this. See below for more information on this.
But first: @Rupert_Hoffschmidt’s suggestion is the easiest & best solution to implement, and it is the one that I would recommend for you as well.
However, I would recommend using a single-select field instead of a checkbox field. You can read more about this technique in this thread.
So using a field instead of a button is the best way to tackle this.
However, if you'd still like to use a button, you can still do this, too! 🙂
There is one hidden trick to prevent a button from getting clicked in Airtable, and that is to make it a button that opens a URL.
You would create a URL formula that results in NOTHING under the circumstances that you don’t want the button to be clicked. This will dim the button and make it unclickable in Airtable!
Under the circumstances that you DO want the button clicked, you would need to have your formula result in a URL that triggers a custom webhook using Make's automations & integrations.
Once your Make webhook is triggered, you would have Make perform the entire automation for you there, with no scripting necessary at all. You would simply use Make's Airtable automations & integrations.
So, to summarize: just send the request to Make, and process the entire automation there. No scripting necessary.
I demonstrate this entire technique through the context of an email (instead of a button) on this Airtable podcast episode. But the exact same technique could be applied to an Airtable button as well. Check out my demonstration, and you will see how easy this is to setup: https://youtu.be/58urboTLZck?list=PLqssva4liHRwHhQIpTXekG8WObEoyC2F1
The reason that you would have to use Make instead of Airtable to process this request is because Airtable’s incoming webhooks don’t support GET requests (i.e. URLs). There is no way around this requirement at this point in time.
(Of course, if you really wanted to run a custom Javascript in Airtable, you could always have Make send back a POST request to an incoming Airtable webhook using Make's HTTP tool.)
p.s. If your company has a budget for your project and you’d like to hire an expert Airtable consultant to help you with any of this, please feel free to contact me through my website: Airtable consulting — ScottWorld
Actually I thought about it again with inspiration from @ScottWorld 's reply… there is a way of making it happen with a button and the consequentially triggered script: You could change the script in a way that it only does what it does (duplicate records) IF it is triggered by a certain user. The current user you get via Session: Airtable Scripting — Session.
Ah, the workarounds we have to come up with to fight Airtable’s limitations — haha! Let me know if you want help with that!
Hi @Sharon_Visser, there is no way currently to prevent a button from getting clicked. So if you have a button in your table, users are able to click it.
The solution for this would be to not use a button, but a checkbox which triggers an automation with the script. It’s possible to set field permissions on a checkbox.
I can help you change the script accordingly if you post it here (shouldn’t be too much of a big deal).
Cheers,
Rupert
Thank you @Rupert_Hoffschmidt for the idea! The checkbox actually solves 2 problems: 1) field permissions, and 2) a checkbox can be used on an Interface, while a button cannot. I try to use Interfaces as much as possible for my users.
I would also like to learn how to use the current user variable - I think I get it from the link you posted.
@Sharon_Visser:
One thing to note is that you don't need to use scripting at all for this. See below for more information on this.
But first: @Rupert_Hoffschmidt’s suggestion is the easiest & best solution to implement, and it is the one that I would recommend for you as well.
However, I would recommend using a single-select field instead of a checkbox field. You can read more about this technique in this thread.
So using a field instead of a button is the best way to tackle this.
However, if you'd still like to use a button, you can still do this, too! 🙂
There is one hidden trick to prevent a button from getting clicked in Airtable, and that is to make it a button that opens a URL.
You would create a URL formula that results in NOTHING under the circumstances that you don’t want the button to be clicked. This will dim the button and make it unclickable in Airtable!
Under the circumstances that you DO want the button clicked, you would need to have your formula result in a URL that triggers a custom webhook using Make's automations & integrations.
Once your Make webhook is triggered, you would have Make perform the entire automation for you there, with no scripting necessary at all. You would simply use Make's Airtable automations & integrations.
So, to summarize: just send the request to Make, and process the entire automation there. No scripting necessary.
I demonstrate this entire technique through the context of an email (instead of a button) on this Airtable podcast episode. But the exact same technique could be applied to an Airtable button as well. Check out my demonstration, and you will see how easy this is to setup: https://youtu.be/58urboTLZck?list=PLqssva4liHRwHhQIpTXekG8WObEoyC2F1
The reason that you would have to use Make instead of Airtable to process this request is because Airtable’s incoming webhooks don’t support GET requests (i.e. URLs). There is no way around this requirement at this point in time.
(Of course, if you really wanted to run a custom Javascript in Airtable, you could always have Make send back a POST request to an incoming Airtable webhook using Make's HTTP tool.)
p.s. If your company has a budget for your project and you’d like to hire an expert Airtable consultant to help you with any of this, please feel free to contact me through my website: Airtable consulting — ScottWorld
Thanks, @ScottWorld for this suggestion. It has a lot more moving parts, and I’m trying to do everything within Airtable and not have to purchase other products, at least until I run into a problem that can’t be solved any other way. This certainly adds to my learning!
Thank you @Rupert_Hoffschmidt for the idea! The checkbox actually solves 2 problems: 1) field permissions, and 2) a checkbox can be used on an Interface, while a button cannot. I try to use Interfaces as much as possible for my users.
I would also like to learn how to use the current user variable - I think I get it from the link you posted.
Always happy to help when you’ve got questions!
Something to keep in mind is that the script runs in the context of the permissions of the active user. If the user does not have the permissions to edit a field or create a record, the script will not be able to do those things. The script will only change data that the user could change manually without the script.