What if you want ultimate control over your automations with really complicated processes? What if you want to be able to automate between boards? What if you want automations to happen in a specific order? What if you want automations to happen with conditions on multiple fields? What if you want to use Excel functions for statistical analysis? Scriptable can handle all of this.


There are two aspects that have inspired this application:

  1. Teams need to be ever more efficient and automation becomes more important to facilitate this. No one wants to have to do repetitive manual tasks so it would be ideal if there was a way to perform them automatically.
  2. A team member's "I can do it in excel" answer to a challenge, it is easy to import data from excel but often there is business logic held within the excel documents cells. This business logic can be built up from really powerful library of functions that can handle anything from statistical analysis to logic and from engineering functions to date manipulation. Often as it is easier to use excel to perform analysis and manipulation teams fall into the trap of reverting back to excel because they can achieve reporting, manipulation or analysis quickly which leads to fragmented data and reduces collaboration.
  3. It was also suggested on the inspiration board asking for IF, AND, etc. functions. "IF priority level is set to 2 starts, move to group", or "When status column is changed, and IF dropdown is "...", email someone" which validated that my need is also shared by others.

Personally I have also worked in project delivery for over a decade and there are often unique requirements by project for processes that can be time consuming. Some example uses are:

  • On a deal board - project managers wanting to be notified when certain conditions like deals making a loss occur. And to create a ticket in another board to analyse the item that is making a loss so it can be picked up by audit team.
  • On linked boards such as product line boards and organisation division board - where we have products in one table link to values in the organisation division board where data needs to be consistent between them eg. Sum of product sales is shown at organisation level.
  • Ticket escalations - when items are created from customers being able to perform different actions based on the ticket type, process and action.
  • Personal, Team and Organisation boards - having different boards and workflows that move items between boards when events and conditions occur to support efficient running of a team.
  • Bulk Archive based on a condition - when a period of time ends sometimes you want to clean up a board. The items you archive may need to be checked if they are finished with or not manually, for instance items that have been marked as done for a month with an earning rate of X% otherwise they may need to be validated that they are finished. This could and should be automated to make it easier and reduce errors.

These are complicated but common and useful tasks. Scriptable is here to help.

What it does

Scriptable allows users to create macros or scripts that can be executed either manually or by automation triggers (eg. Item creations) to automate processes around their boards and data. It does this by providing a board view that allows users to create, update and execute these macros. With all of the out of the box functions and actions it means users can easily write complicated scripts that can do things like check multiple properties, update many boards, move items around all from a single automation. There is no limit on a single script's complexity with the power of scriptable.

Board View

To make it easy for users to work with scripts/macros in their Monday boards this application includes a board view that allows users to create, manage, update and test. This board view is broken down into three areas:

  1. Script List - this is where I can see and select to get to all of my scripts
  2. Script Body - where I can actually write my script using autocomplete and script formatting.
  3. Execute and Log - when you run the script you can see the log of what the script did and executed.


One of the challenges with writing scripts is the user entering knowing what is available, how functions work and how to call data. Scriptable helps this by providing a powerful autocomplete function. This auto complete function helps by suggesting functions from the inbuilt Monday actions capabilities, excel macro functions directory and variables such as groups, users, columns, boards from across your Monday account. This means that if you want to move and Item for instance to another board you type MOV and Scriptable will suggest MOVEITEM(group) function and if you want to move it to a group called 'New Group' type New and Scriptable will suggest New Group and autocompleting it. Meaning by typing only a few characters you have written a script that can be triggered as an automation and will move an idea between groups. The autocomplete function supports all of the functions listed below for easy use.

Monday Action Function Support

The heart of Scriptable is that the Monday API functions are easily exposed as prebuilt functions, which allow users to make use of the powerful capabilities of Monday's APIs in their Macros.

  • 🟢Create Item - this creates an item, you can specify the board that you would like it to be created in
  • 🟢Get Item Value - specify the column for the data. Scriptable intelligently works out what the data looks like so parse numbers etc. to make working with data easy.
  • 🟢Set Column Field on Item - apply a new data value to an item
  • 🟢Delete Item
  • 🟢Duplicate Item
  • 🟢Archive Item
  • 🟢Move Item To Group - easily move items between groups
  • 🟢Notify User - sends a notification to a user or group of users

Excel Function Support

Out of the box excel function support with areas including:

  • 🟢Statistical Analysis - A set of statistical analysis functions such as CORREL, COVARIANCE, FDIST, FORCAST, FREQUENCY, GAUSS, GROWTH, RANKAVG etc so you can perform any statistical analysis on your data sets
  • 🟢Mathematical - advanced sets of mathematical functions such as PRODUCT, POWER, RAND, QUOTIENT etc to bring more processing capabilities to your scripts
  • 🟢Engineering - For performing engineering processes you have access to functions such as COMPLEX, BIN2OCT, CONVERT etc.
  • 🟢Financial - to analyse financial data you also have finance algorithms built in like PV, RATE, PPMT, MIRR etc so you can really get to grips with your finance boards
  • 🟢Logical - for comparisons and condition checking
  • 🟢Date Manipulation - to work with dates eg. EOMONTH, ISOWEEKNUM, WEEKDAY etc.
  • 🟢Text Processing - for text handling such as REGEXEXTRACT, ROMAN, UNICODE, SUBSTITUTE etc.

With all of these functions and actions it means you can easily write complicated functions that can check multiple properties, update many boards, move items around all from a single automation. Power of scriptable.

Any Script as an Automation

Easily add any of the automation scripts you have written to be triggered automatically when columns are changed, items are created, recurring or scheduled events and more to fully customise the automated work flow.

Scriptable compliments the formula column by adding in scriptable macros system for events or complex between column processing.

How I built it

I built the application using Monday API, Monday JS SDK, AWS Lambda, AWS Gateway and DynamoDB so that the Scriptable engine is highly scalable and performant no matter what it is being asked to do.

I started with the backend which I built using nodejs. This is a script that interfaces with DynamoDB for token and script storage, then Lambda for the execution of script phases and Gateway to front the Lambda as services. The nodejs script then has the Monday JS SDK to be able to interface with the Monday OS system.

Then I worked on the front end where I used the Monday OS Framework to build the Board interface on top of Scriptable.

Challenges I ran into

The challenges I faced were:

  • Making Scriptable easy to use - this was achieved using autocomplete and run log component as it can suggest the correct variables and then allow a user to run the command and see what the result of the execute was.
  • Making Scriptable powerful - bringing over the excel functions and capabilities as macros can have such a large number of functions within them. Scriptable has over 100+ manipulation functions to help analyse and process data.
  • Making it easy to select the scripts for board integrations and automations - aligning the board view save data with the automation scripts so that it was easy to do was a fun challenge and I found I could use the JWT tokens to drive the link so that adding an automation is as simple as selecting an item from a list.

Accomplishments that I'm proud of

  • How easy it is to write some integrations - a process like Duplicating, archiving or deleting an item can be achieved in a single line of scriptable.
  • How powerful the scripts can be - there is no limitation of the complexity for the script. You can keep adding more and more functions to the macro/script.
  • How fast and scalable the scriptable execution is - with the application build on Lambda it means that it is really quick and scalable. I have been surprised even when the script being run is hundreds of lines of process.
  • How integrated and easy to use Scriptable is by leveraging the Monday OS Framework Overall I really see that this can push the boundaries of what can be created and managed in my Monday boards.

What I learned

I have learned a lot about the Monday OS and how to make the most of the powerful APIs underneath. I have also gained more of an understanding about excel macros and how many powerful functions are available.

What's next for Scriptable

The next stages for scriptable are to build up a directory of common scripts to help users get started quickly by just importing them and to add a documentation section so you can easily find information on how to use each of the functions and capabilities of Scriptable.

Built With

Share this project: