🔐

ADMIN ACCESS

Enter your admin password to manage the Night Owl knowledge base.

Night Owl Cookies
👤 Team
🦉

HOW CAN I HELP?

Need help with a guest? Or maybe you need a recipe or specific document? Let me know below. I'm here to help. I'll pull from the Night Owl playbook.

Customer doesn't like their cookie
Cream cheese frosting recipe
Opening checklist
Admin mode · API key active
Google Sheet Sync NOT CONNECTED

Your sheet should have two tabs: Playbook (Situation / What to do) and Logins (Username / Password).

Manual Scenarios 0
PDF Documents 0
📂
Upload PDFs
Staff handbook, menus, policies…
Setup Guide
Sheet Tab 1 — "Playbook"
Columns: Situation | What to do. Add a new row for every scenario.
Sheet Tab 2 — "Logins"
Columns: Username | Password. Add a row per team member.
Apps Script
Go to Extensions → Apps Script, paste the script below, deploy as Web App (access: Anyone), paste URL above.
Hosting
Drag this file to netlify.com/drop for a free shareable URL.
Apps Script Code

This script reads both your Playbook and Logins tabs and sends them to the site.

function doGet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // Read Playbook tab
  var playbook = ss.getSheetByName('Playbook');
  var pbData = playbook.getDataRange().getValues();
  var scenarios = [];
  for (var i = 1; i < pbData.length; i++) {
    if (pbData[i][0] && pbData[i][1]) {
      scenarios.push({
        situation: pbData[i][0],
        action: pbData[i][1]
      });
    }
  }

  // Read Logins tab
  var logins = ss.getSheetByName('Logins');
  var lgData = logins.getDataRange().getValues();
  var users = [];
  for (var j = 1; j < lgData.length; j++) {
    if (lgData[j][0] && lgData[j][1]) {
      users.push({
        username: String(lgData[j][0]).toLowerCase(),
        password: String(lgData[j][1])
      });
    }
  }

  return ContentService
    .createTextOutput(JSON.stringify({ scenarios: scenarios, users: users }))
    .setMimeType(ContentService.MimeType.JSON);
}