Move Your Training Plan Out Of Google Sheet To Mobile App In 5 Minutes
Tags: programming, webdev, tutorial, beginners
Published: 2022-10-24 09:49:57

This story starts with pain. The pain of using google sheets on mobile during a training session, to be specific. I wanted to find some easier way of browsing exercises, descriptions, repetitions, etc. while keeping all training history. Basically how to use google sheet functionality while not using google Sheets. 

Here comes the Airtable. I think the first google result is quite accurate about it. 

> *Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet.*
> 

Seems nice? Let’s dive in. 

I will show you the path from zooming in google Sheets between reps to an easily browsable airtable database. 

For this example, I prepare a dummy training description in excel. They might not make any sense but this is not the point here.   

### FROM THIS

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F90ff8be9-8968-4a7d-91a5-8690125fc427.png&w=2048&q=80)

### TO THIS

![Screenshot_20221010-131628.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F49008cd6-715d-4c1c-aef0-2924fa126dc1.jpg&w=640&q=80)

## What do we want?

Let's look at the training and how they are specified. There are cycles that are X weeks long and consist of 3 different training sets. Training A, B, and C. Each training consists of other exercises. Worth to note is that some of the exercises are the same in different cycles. 

- Cycles with three different pieces of training
- Training with exercises
- Exercises - I will live it as it is (long text). You can dive deeper and split it into series, repetitions, etc.

## Airtable database and exercises table

First, go to [airtable](https://airtable.com/) and create a database (in airtable terms it is a **base**). The first thing you will is a table called “Table 1” with some columns. Let’s remove them and call the table **Exercise.** The convention is to keep it singular so let's stick to **Exercise** instead of **Exercises.**

 Also, we can change the name of the database on the left top. Let's call it **MyTraining.**

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F2c810e68-410b-4834-a7f0-e32432bc91bc.png&w=2048&q=80)

Based on exercises in google sheets, each exercise has some description and type. Those will be the two first columns in the table. Let’s use `Long text` for the description and `single select` for the field **type.**  

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fe34193bd-9f9a-4895-b327-8c8567d06558.png&w=2048&q=80)

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fe36504be-0924-420d-ad40-a0c864df957a.png&w=2048&q=80)

Now add all exercises from google sheets to the table. Click `+` button under the `Name` column and fill in the values.

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F78432175-500a-4269-9f05-d530ee123ef7.png&w=2048&q=80)

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F5d045cd9-0a77-4251-960b-14fe19ae34d1.png&w=2048&q=80)

In the `Name` column, I used a short description that briefly describes what it is about. It could be helpful when doing the same training for the n time in a row.  

## Exercises to Training units

Now let’s create the second table. All the exercises are grouped into training units in this case. To switch between them we need another table called `Training`. It will represent your one day at the gym so it will consist of all the exercises you should do in a single session. Create one adding new card next to `Exercise` - “Add or import” and choose “Create empty table”. 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F67c18e79-dde7-4eac-817d-0423049687e9.png&w=2048&q=80)

Remove all unnecessary fields and add a new column. This time it will be a relation column called `Exercises`. Choose “Link to another record” and “Exercise”. Check if “Allow linking to multiple records” is enabled. 

 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fb034391b-f403-4d58-921f-11993c24b4ba.png&w=2048&q=80)

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F7bb4fdc6-2f22-46ed-8dfc-2a8f5328ecaa.png&w=2048&q=80)

Let’s create our first training. For the name, I will use the `A` `B` `C` keys since that is the way I have them ordered in the google sheets on the cycle level. Previously created exercises add based on what is in your google sheet. 

You should have sth like this at this moment. 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F488d147b-c0d3-4cd6-b14e-68f1f34cd12c.png&w=2048&q=80)

## Training to Cycles

Now let’s create the cycle table. All the training units are grouped into cycles in this case. To switch between them we need another table called `Cycle`. Remove all unnecessary fields and add a new column. Again use the relation column called `Training`. Choose “Link to another record” and “Training”. Check if “Allow linking to multiple records” is enabled. 

 Cycles are groups of training units in the scope of a few weeks.  I. e. we have here: 3 training units N times each is one cycle. So to model that we will use the same technique as in the relation between exercises and training. 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fa8bdf267-d95f-43b9-9be2-b39f84b472fc.png&w=2048&q=80)

And fill the table row. 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F463de87e-c4ac-4153-ab29-a48e536777fd.png&w=2048&q=80)

## Going mobile

I found that using Airtable mobile app is very useful in this case. Download it on your phone and log in. Check what we’ve just created. 

Cycle view

![Screenshot_20221010-124530.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fd9d81592-ffe4-4fc6-93ef-8b7779730f4d.jpg&w=2048&q=80)

Trainings in cycle

![Screenshot_20221010-124537.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Faa6dd1c9-184a-453e-a3aa-34b70af56855.jpg&w=2048&q=80)

Exercises in a training unit

![Screenshot_20221010-124548.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F855f2014-840e-4cd0-b7e1-9b1280368174.jpg&w=2048&q=80)

Exercise details

![Screenshot_20221010-124612.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F0f427f18-2770-4ccb-8005-4c77f3aefc8c.jpg&w=2048&q=80)

Obviously, there are a few things that we can improve. The first is that we don’t need details like cycle and training on the Exercise details view. If we check the `Exercise` table in airtable, we can see some new columns which we didn’t create. They were created automatically when adding a relation. Hide it to remove it from the view also on the mobile.  

Right-click on the column name and choose “hide field”. Do the same for the `Cycles` in the `Training` table. 

Another thing is that we can work on Training unit name to make it more meaningful. 

First, let's move the training key to a new column. Choose the “select single” option and add A B and C options. 

Second, retrieve the exercise type with the rollup field type. Add a new column, call it `ExercisesTypes`, choose “Rollup” type, then the Exercises field and `Type` as a field to roll up. The aggregation formula will be joining all types divided with slash into a single string. 

```bash
ARRAYJOIN(values, "/" )
```

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fe4b7dfef-b2c9-46eb-b7e5-a5c5e3471b28.png&w=2048&q=80)

Next change the `Name` field type to “Formula”. Right-click on the column name and choose “customize field type” 

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fc3767fe5-0bf8-4b10-a056-cd5e4b63466a.png&w=2048&q=80)

All this should result in the name: `TrainingKey + types of exercises in training`.

![Untitled](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2Fb019646b-4424-4fb9-846b-3f47ccd6443d.png&w=2048&q=80)

Don’t forget to also hide columns `TrainingKey` and `ExercisesTypes`.

Let’s check again the mobile app. 

![Screenshot_20221010-131440.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F85d4be94-734a-401d-b3d0-dc49bd95cc7a.jpg&w=2048&q=80)

![Screenshot_20221010-131921.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F516b8489-fcbf-486e-9171-596bff331e4b.jpg&w=2048&q=80)

![Screenshot_20221010-131622.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F7c88c503-0177-4125-bc7b-c9daecfe27c9.jpg&w=2048&q=80)

![Screenshot_20221010-131628.jpg](https://kuba-szwajka.super.site/_next/image?url=https%3A%2F%2Fsuper-static-assets.s3.amazonaws.com%2Fc0fc84d8-fb32-4194-8758-4be657666aab%2Fimages%2F49008cd6-715d-4c1c-aef0-2924fa126dc1.jpg&w=2048&q=80)

## Summary

This only shows how we can move from one tool to another which is easier to use in this case. Don’t forget that airtable is a much more powerful tool. A few example ideas of mine to extend what we’ve already done: 

- Add a starting date to the cycle to sort them with the current one on the top.
- If you are a couch you can add a `User` table to manage training between them.
- Create another table that will log the training you have done. Then you can generate a report for your coach every week. Also, you can automate it!
- You can add a field with a link to a youtube video on how to do certain exercises.

This post was originally published on my [blog](https://kuba-szwajka.super.site/posts/posts/move-your-training-plan-out-of-google-sheet-in-5-minutes). Check out for more.