Today In
Today Out
Tmrw In
Tmrw Out
Staying
Available

Availability Checker

Status: local cache only — add AptStatus sheet URL in Setup for team sync
Any
Select dates to check availability

📊 Google Sheets — Bookings

Publish your sheet as CSV (File → Share → Publish to web → Bookings sheet → CSV format). Only this app reads it.

1
File → Share → Publish to web → select Bookings sheet → format CSV → Publish → copy link
2
Paste below and click Sync. App auto-refreshes every 5 min.
GoogleMaps sheet CSV (for area auto-mapping from col G=apt#, col H=area#):

🧹 Apartment Status Sheet (AptStatus tab)

Create a new tab called AptStatus in your Google Sheet with 3 columns: A = Apt#, B = Status, C = Updated. Publish it as CSV and paste the link below. The app syncs every 2 min — all team devices see the same status.

1
In your Google Sheet: add a new tab, rename it AptStatus
2
Row 1: headers — AptNum, Status, Updated
3
File → Share → Publish to web → select AptStatus tab → CSV → Publish → copy link
4
Paste below and click Sync
5
In your Apps Script (the one already deployed for payments) add the code block shown below
🔧 Write Diagnostic
Tap to send a test write (Apt 999 → ready) using 3 different methods. Then check your AptStatus sheet for a "999" row.
Add this to your Google Apps Script (after the existing saveCell block):
if (e.parameter.action === 'setAptStatus') { var sheet = SpreadsheetApp.getActiveSpreadsheet() .getSheetByName('AptStatus'); var aptnum = String(e.parameter.aptnum); var status = e.parameter.status; var data = sheet.getDataRange().getValues(); for (var i = 1; i < data.length; i++) { if (String(data[i][0]) === aptnum) { sheet.getRange(i+1,2).setValue(status); sheet.getRange(i+1,3).setValue(new Date()); return ContentService .createTextOutput('ok'); } } sheet.appendRow([aptnum, status, new Date()]); return ContentService.createTextOutput('ok'); }

🔐 Google OAuth — Direct Sheet Writes

Connect once — KRAT stores your credentials securely on the server and reconnects automatically every time the app opens. No button needed after the first time.

Not connected — notes & payments save locally only
1
Go to Google Cloud Console → Credentials+ Create Credentials → OAuth client ID → type: Web application
2
Under Authorised JavaScript origins add your KRAT URL (e.g. https://krat.workers.dev). Also add http://localhost for local testing.
3
In the same project, enable the Google Sheets API.
4
Copy your Client ID (ends in .apps.googleusercontent.com) and paste below. Also paste your Spreadsheet ID from the sheet's edit URL: .../spreadsheets/d/{ID}/edit
5
Click Connect Google Account once — after consent, KRAT stores a refresh token on the server. From now on every device connects automatically when the app opens. No need to reconnect.
Token expires after 1 hour — click Connect again when writes stop working. Data always saves locally as a backup.

🚐 Transfers IN Sheet

Publish your Transfers IN tab as CSV and paste below.
Required: B = Reservation code(s) · G = Y or N · time column below (default H=7).

🚐 Transfers OUT Sheet

Publish your Transfers OUT tab as CSV and paste below. Same structure — B = code(s), G = Y/N, time in same column as above.

Adjust if your Bookings sheet columns differ. Check the debug output below to find exact columns.

🔍 Debug — inspect your sheet columns

Click to fetch your sheet and show the first 3 rows with column numbers — so you can verify every column mapping above.

🗺 Areas (Area Code → Name)

Edit area names. The number must match column AQ in your sheet.

🌐 Remote access from any phone or browser

Host this file for free on Netlify — takes 30 seconds. You get a permanent URL like krat-calendar.netlify.app that works on any device.

1
Download this HTML file to your computer
2
Go to app.netlify.com/drop (free, no account needed)
3
Drag the HTML file onto the page — you instantly get a URL
4
Open that URL on any phone or browser. On iPhone: Safari → Share → Add to Home Screen → it opens like an app
5
To update later: just drag the new version to the same Netlify site

📋 Add to Google Sheets (optional automation)

To have HostHub automatically push new reservations into your Google Sheet, use Zapier or Make.com:

1
Create a free Zapier account → New Zap
2
Trigger: HostHub — New Reservation
3
Action: Google Sheets — Add Row → map the fields to your Bookings sheet columns
4
This app then reads from your sheet automatically every 5 minutes — fully automated pipeline

🏠 Apartments

A/A number, area code, name. Edit or add new apartments here — changes save instantly.

A/AAreaNameCap