Google Sheet
Your data stays in Google Sheets. Each row has a unique identifier (like a name, order number, email, ID, or code).
A portal to portals. Share one row via URL. No user login required.
Imagine giving your clients, customers, or team members a beautiful web portal that shows exactly one row of data from your Google Sheet, without ever granting them access to the sheet itself.
No user logins. No complex databases. Share only a URL and some kind of identifiction parameter, you decide.
This is the magic of building web portals from Google Sheets using Apps Script and HTML. It's simpler than you think, more powerful than you'd expect, and opens up endless possibilities for how you share and interact with your data.
Nobody expects spreadsheets when you say "portal."
Not sharing a sheet, only a URL
Your users never see or access your Google Sheet.
Not giving view access, of whole sheet.
No permissions needed, no Google account required. Users just see their row.
Not a user login system
Users have an ID. Anything you choose: email, secret key, their name, up to you.
Not a Google Form
This is a custom web page, styled exactly how you want.
Your data stays in Google Sheets. Each row has a unique identifier (like a name, order number, email, ID, or code).
Apps Script reads the URL that a user enters, filters your sheet to find the matching row, and prepares the data for the html to display.
An HTML template shows that single row of data as a custom-styled web page. The user sees only their specific information.
This presentation breaks down every step: from setup to deploy. Follow along to build your first portal today.
parameter.idWhen someone visits your web portal URL with an ID parameter, like:
https://script.google.com/macros/s/YOUR_DEPLOYMENT_ID/exec?id=1001
Apps Script receives this in the doGet(e) function. The e object contains all URL parameters.
Your Apps Script code:
=== (strict equality) to find the row with the matching identifierdata.status, data.name)<?= data.status ?>The magic syntax for getting data into your HTML:
<?= data.status ?>
This is server-side templating. The syntax breaks down as:
<?=: Opens the PHP-style template tagdata.: Accesses your data objectstatus: The column name from your sheet?>: Closes the template tag
Apps Script processes this before sending the HTML to the browser, replacing <?= data.status ?> with the actual value from your sheet.
Once your Apps Script is ready:
?id=XXXX appendedImportant: If you edit your Apps Script code, you must deploy again. But you don't need to change the URL. Just update the deployment.
https://script.google.com/macros/s/AKfycakdkadYuI6VKJOdfeX_63PsLhtadfdRXfdadaKSY47BTRfAQasZKgN9G4adfcug7iw/exec?id=1001
? Question markid= Parameter key1001 Parameter value
You can add more parameters using & (ampersand):
?id=1001&status=active&view=detailed
Each parameter becomes available in your Apps Script via e.parameter.status, e.parameter.view, etc.
Give each client a unique URL to view their project status, invoices, deliverables, and updates. All from a single Google Sheet.
Customers enter their tracking number in the URL to see real-time shipping status, location, and estimated delivery.
Team members access project details, tasks, deadlines, and progress updates via a simple URL. No login required.
Share product availability, stock levels, and details with vendors or customers using item-specific URLs.
Customers check order status, shipping info, and delivery updates without creating an account.
Attendees access their registration details, tickets, schedules, and event information via a unique ID.
Once you've mastered the basics, you can add powerful features to your portals:
Watch step-by-step tutorials showing exactly how to build web portals from Google Sheets. See the code, watch the deployment process, and understand the magic.
Start with the slides presentation above, follow along with the video tutorials, and build something amazing. The best part? You're using tools you already know: Google Sheets and a bit of Apps Script.
This isn't about complex databases or expensive platforms. It's about unlocking the potential that's already in your spreadsheets.
Every row in your sheet can become a portal. Every unique identifier can unlock a custom view. Every deployment can serve thousands of users. This is the power of combining Google Sheets, Apps Script, and HTML. Three simple technologies that, together, create something extraordinary.
Start building. Start sharing. Start creating portals that make your data accessible, beautiful, and useful.
Portals like these lean on it. If you'd like to read and change that code more easily: or scripting still feels new, I'd point you to Spreadsheet Automation 101. It walks through the fundamentals and the kinds of automations that show up in projects like this.