We have been organizing ski trips since the beginning. I remember we could fit in a car when we started, then in a pickup van, we later had to rent a couple of cars to be able to go, soon we had to share a bus with other people and now we need an entire bus for us.

Getting people to join

Once you have a date and a location, you can create a form with all the available options and share it via email, slack or whatever. We used to create it using Google Forms because it integrated with Google Spreadsheets and was easy to use, but now we use Typeform. It’s beautiful and now also integrates with Spreadsheets.

Typeform captured results in the Google Spreadsheet

Calculating each individual price

Our ski trip has a lot of variability. One individual might want to rent gear while another one already owns it. Some individuals might want to snowboard and others might want to rent the highest quality skis available. Some need classes and some want an insurance. Some people don’t even want to ski, but just spend the weekend in the snow.

This results in a situation where almost everyone has a unique price and although it was easy to calculate and handle when we were 5, it gets harder when you are 50.

You could perform a 200 character long nested IFS function to calculate the price for every row in the Spreadsheet, but it’s easier to just code your own more readable and maintainable Google Script function.

From the ‘Tool’ menu you can access the ‘Script Editor’ and there you have a lot of freedom to write your own functions.

I coded the ‘skiPrice’ function to calculate the final price for every possible combination, depending on the arguments the function received. Once coded, you can call the funcion as if it was a normal Spreadsheet function, sending cells as parameters.

The ‘skiPrice’ function calculates the final price

Sharing the info with the agency

Once you have all this information available you have to share it with the agency so they can check all prices are correct and to generate the insurance policies for the people who are paying for them. You could copy and paste or export the document but the best option is to share the live spreadsheet so they always see updated information. You could share with them the whole spreadsheet as “read-only” but you might have information or sheets you don’t want to share with them.

The best approach is to create an ‘Agency’ sheet in the same spreadsheet, with all the information you want to share with the agency. Then create a new Spreadsheet and in the first row write:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[YOUR_SPREADSHEET_ID]/edit";"Agency!A1:J60")

This will create a new Spreadsheet with only the sheet you want to show the agency, so you can now share it. Whenever you update the original Spreadsheet this mirror sheet will conveniently keep up to date.

Send custom payment emails from Spreadsheets

Once again this is a task that I could afford to do manually when we were less people but now doesn’t scale. Using the power of the Google Scripts I generate the corpus of the email, containing the options each user selected.

In the actual Spreadsheet I calculate the total price and generate the email corpus in one function call and a single iteration, but it’s easier to explain it separately.

The function ‘mailText’ generates a custom email corpus showing the user the options he chose and showing the total amount to pay. The funcion takes all options as parameters.


Once the email corpus is generated, a final script run directly from the script editor iterates through every row in the Spreadsheet and sends an email to each user containing the custom corpus.

And every user gets the email in their inbox.

Conclusion

The powerful combination of Typeform, Google Spreadsheets and Google Scripts is great, but after organising ski trips for years I see a clear next step. A modern ski agency app that would let companies and individuals organize their custom ski trips adjusting every detail to their budgets and keeping all the information, communication and payment processes in one place. Considering there is more than 6M skiers only in Spain we are looking at an interesting market.

How does Skitnig sound for a new startup name?

Previous ArticleNext Article

Leave a Reply

Your email address will not be published. Required fields are marked *

N.

No more server side rendering?

javascript and seo

A couple of weeks ago google announced a long-awaited updated on googlebot. It now runs chrome engine version 74, the same we’re currently running in our Chromes. What’s more, it announced that from now on it will keep doing regular updates on it to ensure continued support for new web technologies.

It’s still missing support for some features, but different people reported their websites being crawled and rendered perfectly by google bot now. You can use ES6 syntax and many more things without the need to polyfill or apply babel!, at least not so heavily as if the website was from 2015.

It’s not all rainbows and unicorns however, it’s known that google crawls websites with a javascript-enabled browser far less often than without it. It’s to be expected given than crawling a site with JS is fairly more expensive. So, if you have a client side website and you’re fine with google updating contents every other day, that’s fine, but if you need google to pick up updates multiple times per day you’ll still need to provide a SSR version.

Another thing to consider is the support for other search engines besides Google. Different experiments show that some of them are able to pick up javascript up to some extent, but surely not as well as google. If you care about other search engines, you’ll still have to use SSR too.

Still, this is a huge step forward from google. Websites have had a big increase in average size in the last years, and google also has to parse and take into account CSS to check for hidden content, so it’s to be expected that soon enough it will have enough capacity to crawl javascript sites as often as non-javascript ones. It’s just a matter of time.