Inside this article
Example 1 - Personalized to-dos
Example 2 - Adding new contacts
Example 3 - Logging updates
Example 4 - Upvotes and downvotes
Example 5 - RSVPs
Example 6 - Remove dupes button
Example 7 - Timers
Example 8 - Assigning tasks
This first example uses the User( ) formula to create a collaborative to-do list.
Here's how it's set up. Let's start with the first button Add To Do for Maria:
- Name: Add To Do
- Label: = "Add To Do for "+User().Split(" ").First()
- This formula pulls from the currently logged in user with the User formula, and then using Split() and First () to only pull the user's first name
3. Action: Add Row. We then choose to add the row to the To Dos table and pull the User's name using the User () formula again:
4. Show Record: We've toggled this on so that the row modal can act like a form entry
Now, let's take a look at the second button, Make Maria's Stuff Done:
- Name: Mark To Dos Done
- Label: ="Make "+User().Split(" ").First()+"'s Stuff Done"
- Action: Modify rows. We still choose the To Dos table as the target and a custom filter by user with the result of marking the Done column as true:
4. This button has one more setting, Disable If because we don't always want it to be active. In this case, we want it disabled if the person who is logged in doesn't have tasks or if all the tasks are marked as done already. Here's the formula:
Adding new contacts
Buttons can also be used to act like an entry form for your databases like we see below for updating a customer contact record:
In this example, we only have one button, Add New Contact. Let's see what's under the hood:
- Name: Lead Button
- Label: Add New Contact
- Action: Add Row - our target is the Contacts table, and we want the logged in user to be the Account Owner (so we'll use the User formula again), and we want the status to be set to Not Contacted as a default.
4. Show Row - Toggled on so that the person entering can add further details about the lead.
Updating status can be a bit of a chore so these buttons are designed to make it streamlined and a one stop shop:
Here we are using buttons as a column format. Let's take a look at the set up:
- Column Format: Button
- Label: = "Update "+Feature
- Here we are combining the word update with the item in the Feature column
3. Action: Add Row. And, we're applying these changes to the Update Log table with the name of the Feature, the date, and who created the new entry.
4. Show Row: In this case, we want this turned on so that the logged in person can add their notes.
Upvotes and downvotes
This example also takes advantage of the button column format. You''ll have three columns set to the button format - up, down, and clear:
To set up the voting structure, take the following steps:
- Create one table for your voting, and another table to track the votes. Keep in mind, these can be in totally different sections.
- Label: The up and down buttons will have a very similar set up:
Here, we're displaying the up or down emoji, and using a formula to show the current count of votes. If you want to keep vote counts secret, you can simply include the emoji.
3. Action: Both of these will also Add a row to the Votes table. Our set up completes the emoji, the question text from the vote submission table, and the voter's name using our favorite formula - User ( ).
4. Disable If: Since we don't want our voters to vote multiple times, we've set the button to disable if our vote tally table already has an entry by the user using the following formula:
Now let's take a look at the Clear button:
- Label: Here we'll simply use the text Clear
- Action: Delete rows. In this case, our target is the Votes tally table, and we're using thisRow and User to connect a user's vote to the question.
3. Disable If: We also want to disable clear if the user has not voted yet. So, we'll use this formula:
The RSVP buttons combine the elements you've already seen with a text response using the SwitchIF formula:
For the Yes and No buttons, you'll take the following steps:
- Label - Yes or No
- Action - Add Row with the target being your Attendees table.
3. Disable If: Here, we want to make sure people don't push the button multiple times so we can get an accurate count. So, we disable the button if we already have an entry from the user:
For the +1? button, you'll set it up to update the checkbox as true:
The final element of this button set up is the response that user's get in the text field once they add their response. To accomplish this, type = in the canvas and use the following formula:
Remove dupes button
If you're working with a large amount of data entries, getting rid of duplicate entries can be a very handy trick:
To set up the de-dupe button, take the following steps:
- Name: Dupe Remover
- Label: = "Remove "+[All Bugs 🐛].Filter([Dupe?]=true).Count()+" Dupe(s)"
- What's happening here is we're grabbing the number of entries that are marked as duplicates using the Filter formula
3. Action: Delete rows with our target table being the All Bugs table
4. Disable If: We don't need our button to be active if there are no dupes so we disable the button if the dupe count is 0. Here's the formula for reference:
This button set up connects a button to a dropdown select list control:
To set up the timer, you'll begin by creating a dropdown select list control and naming in duration:
Now that you have the dropdown menu, you can create the button with the following settings:
- Name: Timer Button
- Label: Click to begin
- Action: Modify rows with the target being the Time table. We only have one row that we're modifying here. The value we update combines the Now( ) formula with the value in the duration select list in terms of minutes:
4. For the text letting you know how much time you have left, you'll use the IF formula:
Our last example lets you create a workflow around tasks that need to follow a particular process:
To create your workflow, first identify the steps and owners in a status progression table:
Then in your Handoff column format, you can use this data to drive direction:
- Label: = "Handoff to "+[Status Progression].Filter(Rank = thisRow.[Current Status].Rank+1).Status
- What we're doing here is using the rank of the steps to change the button based on which step comes next in the process
2. Action: Modify rows in the Content Production table. Again, we use the rank option to connect steps to people:
3. Disable If: We then turn the button off if we've made it to the final step: