Skip to content

Build your own Scrum tool

burn-down chart example

Have you ever consider that tools which you are using may determinate the way how do you work. Especially the Scrum tool which you use might determinate how good your Scrum really is.

Most of the Scrum tools are way to complex

I hate complexity. I hate unnecessary complexity. I hate unnecessary complexity, especially in Agile. This why in my opinion most of the available “agile” and Scrum tools are not so Agile. For example tools like Jira have been created for top managers who like to watch charts and numbers which usually are far away from the reality and to be honest, are not helpful at all. Of course we use Jira if needed but we are trying to do this the simplest way possible.

There are also few good agile tools like for example Trello. Trello is great as a task board but sometimes you may need something more. This is why I decided to try to use simple google spreadsheet where we could keep our Sprint Backlog and track the progress. We have done few tests with our teams and I would like to share with you an effect of two hours of playing with google scripts which might be helpful for you.

The spreadsheet you may find here. Please note that you have to be logged in to use this tool. If you want to play with it, it would be great if you could make a copy first and play with the copy.

You may notice that in the menu I’ve added two more options: Sprint -> Start Sprint and Sprint -> Archive Sprint this is what makes this spreadsheet a Scrum tool.

How does this Scrum tool work?

We are starting from creating Sprint Backlog. Sprint Backlog is a plan for the next iteration. From my experience the best way to do that plan is to prepare a set of user stories and then split each of them into small tasks which you can estimate in hours [Hours Estimated]. Then copy Hours Estimated column into Hours Remaining column and you are ready to start Sprint by choosing from menu Sprint->Start Sprint. It will create the starting point for your Sprint Burndown Chart. Every day your team should update remaining hours for each task. Remember that in Scrum we are not tracking how many work hours were spent on each task butwe are rather focused on how much work still remains to be done. The spreadsheet which I have created will update burndown chart every night. At the end of Sprint you may archive it by clicking Sprint -> Archive Sprint – it will create a new tab with archived Sprint details and clean up current Sprint.

How to build your own Scrum tool?

The spreadsheet which I’ve shared with you is just a demo – starting point for you is to build your own tool which will be dedicated exactly for your teams needs.

Bellow you can find the (ugly) code which I’ve used in this spreadsheet. You can copy it and paste into Tools->Script Editor in your own spreadsheet. Then you can play with it as you want.


function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var backlog = ss.getSheetByName("Sprint Backlog");
var burndown = ss.getSheetByName("Burndown Chart");
var source = backlog.getRange("E1:F1");
var values = source.getValues();
var startingValue = values[0][1];
values[0][0] = new Date();
var lastValue = burndown.getRange("B1").getValue();

if (!lastValue) {
lastValue = values[0][1];

var expectedValue;
var lastRowNumber = burndown.getLastRow();
if (lastRowNumber == 0) {
expectedValue = lastValue;
} else {
expectedValue = startingValue - startingValue/9*(lastRowNumber-1);
values[0][2] = expectedValue;


function archiveSprint() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var backlog = ss.getSheetByName("Sprint Backlog");
var burndown = ss.getSheetByName("Burndown Chart");
var today = new Date();
var archivedSprint = ss.insertSheet();
var oldBacklogValues = backlog.getRange("A1:H99").getValues();
for (i=0; i< oldBacklogValues.length; i++) {
var oldBurndownChart = burndown.getRange("A1:H20").getValues();
for (i=0; i < oldBurndownChart.length; i++) {


function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
.addItem('Start Sprint', 'recordHistory')
.addItem('Archive Sprint', 'archiveSprint')


And then you need to setup triggers for automatic update of the Spreadsheet every day. In the script editor go to Resources->Current project’s triggers and add new. For example I have added 5 separated triggers for each weekday just before the midnight.

And basically, that is all. Enjoy!

PS: The code and the tool might be done much better especially those hard coded values etc. This is just the very first proof of concept. I would ask you to tell me if it is helpful at all and if there is a point to develop it more. I would also love to see your implementation of such a Scrum tool.

Stop being limited by agile tools providers – build your own Scrum tool dedicated to your team!

Do you want to learn more?

Discover how dedicated development teams work and what is the difference between them and in-house IT department or standard teams offered by other software houses.



Check our product development guidebook

guidebook cover new website