Make your own Office Desk Booking with Apps Script

Stéphane Giron
3 min readJun 22, 2021

--

In this new era post Covid, to come back to work we have to maintain a certain quota of people at the office. At Devoteam G Cloud we had this needs and to be able to manage people at office we build a web app with Apps Script to manage team and people presence on site.

Build your own Office Booking system with Apps Script

Some context

In order to go back to office we have to maintain a certain quota of presence and for that we needed an application to allow people book desk at the office.

Naturally we decided to base our solution on our Workspace environment and to answer fastly Apps Script was the best solution, specially web applications.

What we can do with our Office Desk Booking ?

The app is not defined to manage a whole company, it is more for managing service, department, floor, team booking. For example at Devoteam G Cloud we have 2 instances one for Paris and one for Lyon.

With the application you can :

  • Manage a daily quota of presence
  • Manage team and number of persons in team
  • Assign teams per days
  • Book remaning open desks
  • Delete your booking
  • View 2 weeks, current one and next one

Refer to this section to setup the application : setup instruction.

How we manage data

To manage the data we use the PropertiesService. Property Service is a really good service from Apps Script that will allow developpers to save a small quantity of data in the script directly. You have 3 container, Script/User/Docs. For the booking system as all users must share the same information we user the Script service. If you need to save a user related data, you have to use the User service.

Access is pretty fast and response time really good, it works like a charm with JSON. To get data we set a function :

function getCustomBooking(){
var data = PropertiesService.getScriptProperties().getProperty('custom_booking');
// console.log(data)
if( data && data != ''){
obj = JSON.parse(data)
obj = cleanOldData(obj);
return obj;
}
return {}
}

The cleanOldData() function is there to remove old entries to save some space.

For savind data we just save the stringify version of our JSON.

function setCustomBooking(custom){ 
PropertiesService.getScriptProperties().setProperty('custom_booking',JSON.stringify(custom));
}

Deploy application

You have to deploy the web app with the credentials of the owner for the whole domain.

Get your version

The script is available on GitHub, it is my small contribution to the Post Covid era of Office management.

Get it on GitHub : Office Desk Booking

Make a copy of the script : Get the Script, click the ‘Make a copy’ icon at the top right.

--

--