AWS Builder Center
Don't miss your 90-day streak badges with Google Calendar

Don't miss your 90-day streak badges with Google Calendar

Help yourself earn the 90-Day Streak badges with Google Calendar by improving your time management and reducing cognitive load. Use a simple Google Apps Script to create all the tasks automatically and follow a plan that will help you for the next 90 days.

As you might already know, to get a voucher for an AWS certification exam you need to earn 21 badges on AWS Builder Center. Some of them are easy (add a picture to your profile, read 10 articles), but others turned out to be surprisingly hard. Especially the 90-Day Streak ones. So I started wondering how I could support myself in getting these long-term badges that take almost 3 months.
Even one missed day resets the streak and you start again from day 0. So I needed some kind of system to keep me on track and to lower the daily cognitive load. I like to plan my activities in Google Calendar, so I decided to put my daily badge tasks there as tasks.
Creating them manually worked at first, but I couldn’t see when the challenge would end, and I didn’t know which day of the challenge it was (to compare with the number on the platform). So we (me, AI and coffee) wrote a Google Apps Script that adds all those tasks to my calendar.

Step 0: Set up Google Apps Script

Google Apps Script  is a platform that lets you automate tasks in Google services using JavaScript. We will use it to create 90 daily tasks in Google Tasks automatically, instead of adding them manually.
Open Google Apps Script , click the button "+ New project" to create the project, name it "AWS Calendar" and use the editor to write and run your code. Click + button next to Services and choose "Google Tasks API" from the list of services, leave the rest as it is and click the button "Add".
Now you have the first default file in your project names "Code.gs", soon you will use it.

Step 1: Get a task list's ID

First, you need to find the task list ID so that Google Apps Script could add tasks to the correct list automatically.
I used this simple script to display all my task lists and their IDs in the execution log:
1
2
3
4
5
6
7
function showTaskLists() {
const lists = Tasks.Tasklists.list().items || [];

lists.forEach(list => {
Logger.log(list.title + " | " + list.id);
});
}
Insert the code into your "Code.gs" file and run it. Grant the requested permissions, then check the execution log, it should look like this:
You see your task list ID. You will need it in the next steps.

Step 2: Create the tasks

Click "+" next to Files, choose Script and name the file "createAwsTasks". Insert the next code into the file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
function createAwsTasks() {
const taskListId = "YOUR_TASK_LIST_ID";

// Modify the start date in format (YYYY, DD, MM)
const startDate = new Date(Date.UTC(2026, 9, 10));

for (let i = 0; i < 90; i++) {
const dueDate = new Date(startDate);
dueDate.setUTCDate(startDate.getUTCDate() + i);

const task = {
title: `AWS ${i + 1}: Visit, like, comment`,
notes: `https://builder.aws.com/`,
due: dueDate.toISOString()
};

Tasks.Tasks.insert(task, taskListId);

console.info(`Created 1 "AWS ${i + 1}: Visit, like, comment" task on ${dueDate.toISOString()}.`);
}

// Vote for wish + Publish an article
const isMonday = startDate.getUTCDay() === 1;

const taskDates = [];

if (isMonday) {
// Create four tasks on eight consecutive Mondays
for (let i = 0; i < 8; i++) {
const dueDate = new Date(startDate);
dueDate.setUTCDate(startDate.getUTCDate() + i * 7);
taskDates.push(dueDate);
}
} else {
// Create one task on the start date
taskDates.push(new Date(startDate));

// Create three tasks on the following Mondays
let nextMonday = new Date(startDate);

const daysUntilMonday = (8 - startDate.getUTCDay()) % 7 || 7;
nextMonday.setUTCDate(startDate.getUTCDate() + daysUntilMonday);

for (let i = 0; i < 7; i++) {
const dueDate = new Date(nextMonday);
dueDate.setUTCDate(nextMonday.getUTCDate() + i * 7);
taskDates.push(dueDate);
}
}

taskDates.forEach((dueDate, i) => {
if (i < 4) {
const task = {
title: `AWS ${i + 1}: Vote on wish`,
notes: "https://builder.aws.com/",
due: dueDate.toISOString()
};

Tasks.Tasks.insert(task, taskListId);
console.info(`Created 1 "AWS ${i + 1}: Vote on wish" task on ${dueDate.toISOString()}.`);
} else {
const task = {
title: `AWS ${i - 3}: Publish an article`,
notes: "https://builder.aws.com/",
due: dueDate.toISOString()
};

Tasks.Tasks.insert(task, taskListId);
console.info(`Created 1 "AWS ${i - 3}: Publish an article" task on ${dueDate.toISOString()}.`);
}
});
}
Before running the script you need to add your task list ID from the step #1 into the script (line #2) and set the start date on the line #5.

Step 3: Run it

... and run it. And voilà, you should see the tasks being created in the Apps Script execution log.
When it finishes, check your calendar. You now have 90 tasks for the “visit, like, comment” 90-day badges, plus 4 tasks for voting on a wish and 4 tasks for publishing an article.
Run the script only once, otherwise you’ll get duplicates.

If something went wrong (skip this part if you are happy with the result)

Mistakes happen. Maybe you ran the script twice, or picked the wrong start date. In that case you don’t need to delete 98 tasks by hand. Here is a script that removes them:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function delete90AwsTasks() {
const taskListId = "YOUR_TASK_LIST_ID";
const expectedTitle = /^AWS/;

let deleted = 0;
let pageToken;

do {
const result = Tasks.Tasks.list(taskListId, {
maxResults: 100,
pageToken: pageToken,
showCompleted: true,
showHidden: true
});

for (const task of result.items || []) {
if (expectedTitle.test(task.title)) {
Tasks.Tasks.remove(taskListId, task.id);
deleted++;
}
}

pageToken = result.nextPageToken;
} while (pageToken);

Logger.log("Deleted " + deleted + " tasks.");
}
Before running the script you need to add your task list ID from the step #1 into the script (line #2).

Step 4: Complete your daily tasks

Now the actual work begins! Open Google Tasks or Google Calendar and complete your daily AWS Builder Center activities. Once you finish a task, tick its checkbox. The task will be marked as completed, and its title will appear crossed out.
Personally, I prefer to hide completed tasks to keep my list clean. You can do this in the time period select options by unchecking Show completed tasks.

Wrapping Up

This little automation won't earn the badges for me, of course. I still need to show up every day and complete the activities. But now I have a way to track my progress without keeping everything in my head.
If you're working towards the AWS Builder Center badges too, I hope this helps you save some time and avoid missing a day!
Good luck with your streak, and happy learning! ✅
What are your favorite time management life hacks? Share them in the comments. I’d love to hear your ideas!
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article