I am because we are
Features • Installation • Usage • Brands • Deployment
Google Workspace email signature management tools for Nyuchi Africa and affiliated brands. Includes a Gmail Add-on with dual User/Admin interface and a full-featured web dashboard for enterprise signature deployment.
User Tab - Self-service signature generation
- Select from 9 Nyuchi brands
- Personal information (name, title, email, phone)
- Profile image support
- Social media links (LinkedIn, X, Facebook, Instagram, WhatsApp)
- Promotional banner with custom links
- One-click Gmail signature application
- Compose trigger for signature insertion
Admin Tab - Enterprise signature deployment
- Push signatures to all domain users
- Single user signature preview and update
- List all users and their email aliases
- Bulk signature deployment
- Scheduled daily automatic updates (2 AM)
- Full web dashboard access
Full-scale administrative dashboard with Nyuchi branding:
- Overview - Statistics, quick actions, activity logging
- User Management - Searchable user table with preview/update actions
- Signature Templates - Live preview by brand
- Brand Configuration - Visual display of all 9 brands
- Settings - Domain config, scheduling, banner management
Batch deployment script for Google Workspace administrators:
- Domain-wide signature deployment
- Automatic brand detection by email domain
- Support for user aliases
- Zimbabwe flag accent strip
- Job title and phone from Google Directory
- Promotional banner support
| Brand | Domain | Logo |
|---|---|---|
| Nyuchi Africa | nyuchi.com | Parent company |
| Nyuchi Lingo | lingo.nyuchi.com | Language learning |
| Nyuchi Learning | learning.nyuchi.com | Education platform |
| Nyuchi Development | services.nyuchi.com | Software services |
| Nyuchi Foundation | foundation.nyuchi.com | Community initiatives |
| Mukoko | mukoko.com | Digital ecosystem |
| Mukoko News | news.mukoko.com | Pan-African journalism |
| Zimbabwe Travel | travel-info.co.zw | Tourism information |
| Tech Leaders | techdirectors.africa | Technology leadership |
- Node.js 18+ (Download)
- Google Account with Apps Script access
- Google Workspace admin (for Admin features)
CLASP (Command Line Apps Script Projects) is Google's official tool for developing Apps Script projects locally.
# Install clasp globally
npm install -g @google/clasp
# Verify installation
clasp --versionBefore using CLASP, you must enable the Apps Script API in your Google account:
- Go to script.google.com/home/usersettings
- Toggle Google Apps Script API to ON
Note: This is a one-time setup per Google account.
# Login to your Google account
clasp login
# This opens a browser window for OAuth authorization
# Grant permissions and return to your terminalTo verify you're logged in:
clasp login --statusgit clone https://github.com/nyuchitech/workspace-tools.git
cd workspace-tools
# Install dependencies
npm installYou have two options:
# For Gmail Add-on
cd gmail-addon
clasp create --title "Nyuchi Email Signature" --type standalone
clasp push
# For Email Signature Generator
cd ../email-signature
clasp create --title "Nyuchi Signature Generator" --type standalone
clasp pushIf you already have Apps Script projects, update the .clasp.json files:
# gmail-addon/.clasp.json
{
"scriptId": "YOUR_GMAIL_ADDON_SCRIPT_ID",
"rootDir": "."
}
# email-signature/.clasp.json
{
"scriptId": "YOUR_SIGNATURE_SCRIPT_ID",
"rootDir": "."
}Then pull or push:
clasp pull # Download from Apps Script
clasp push # Upload to Apps ScriptTo get your Script ID from an existing project:
- Open script.google.com
- Click on your project
- Go to Project Settings (gear icon)
- Copy the Script ID under "IDs"
Or via CLI:
clasp open
# Opens the project in browser, Script ID is in the URLFor Gmail Add-on functionality:
- Go to Google Cloud Console
- Create or select a project
- Enable these APIs:
- Gmail API
- Admin SDK Directory API (for admin features)
- Configure OAuth consent screen:
- User Type: Internal (for Workspace) or External
- Add scopes as listed in Required OAuth Scopes
- Link to Apps Script:
- In Apps Script editor, go to Project Settings
- Under "Google Cloud Platform (GCP) Project"
- Enter your GCP project number
Update .clasp.json in each project folder with your script IDs:
{
"scriptId": "YOUR_SCRIPT_ID_HERE",
"rootDir": "."
}- Deploy the add-on to your Google Workspace
- Open Gmail and click the add-on icon in the sidebar
- User Tab: Configure your personal signature
- Admin Tab: Manage domain-wide signatures
- Deploy as Web App from Apps Script editor
- Access via deployment URL or "Open Dashboard" button
- Manage users, preview signatures, bulk deploy
# Push to Apps Script
npm run push:gmail # Push Gmail Add-on
npm run push:signature # Push Email Signature Generator
npm run push:all # Push both projects
# Deploy
npm run deploy:gmail # Deploy Gmail Add-on
npm run deploy:signature # Deploy Email Signature Generator
# Open in browser
npx clasp open # Open in Apps Script editorworkspace-tools/
├── gmail-addon/
│ ├── Code.js # Main add-on code (1900+ lines)
│ ├── Dashboard.html # Web dashboard UI (900+ lines)
│ ├── appsscript.json # Manifest with scopes
│ ├── .clasp.json # Deployment config
│ └── README.md # Add-on documentation
│
├── email-signature/
│ ├── Code.js # Batch deployment script
│ ├── signature.html # HTML template
│ ├── preview.html # Preview page
│ ├── appsscript.json # Manifest
│ ├── .clasp.json # Deployment config
│ ├── README.md # Setup guide
│ └── TESTING.md # Test procedures
│
├── package.json # Workspace config
├── README.md # This file
├── CHANGELOG.md # Version history
├── SECURITY.md # Security policy
└── .gitignore
const COLORS = {
primary: '#5f5873', // Nyuchi Purple
text: '#2a2a2a', // Dark text
muted: '#737373', // Secondary text
flagGreen: '#729b63', // Zimbabwe flag
flagYellow: '#f6ad55',
flagRed: '#d4634a',
flagBlack: '#171717',
flagWhite: '#ffffff'
};- Headings: Plus Jakarta Sans (700)
- Brand Names: Noto Serif (700)
- Body: Plus Jakarta Sans (400, 500)
4px vertical stripe with 5 equal bands (20% each):
linear-gradient(to bottom,
#729b63 0%, #729b63 20%, /* Green */
#f6ad55 20%, #f6ad55 40%, /* Yellow */
#d4634a 40%, #d4634a 60%, /* Red */
#171717 60%, #171717 80%, /* Black */
#ffffff 80%, #ffffff 100% /* White */
)cd gmail-addon
clasp pushVerify appsscript.json includes the Gmail add-on configuration:
{
"timeZone": "Africa/Harare",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Nyuchi Email Signature",
"logoUrl": "https://assets.nyuchi.com/logos/nyuchi/Nyuchi_Africa_Logo_icon.svg",
"useLocaleFromApp": true,
"homepageTrigger": {
"runFunction": "onHomepage"
}
},
"gmail": {
"contextualTriggers": [],
"composeTrigger": {
"selectActions": [{
"text": "Insert Signature",
"runFunction": "onCompose"
}],
"draftAccess": "NONE"
}
}
}
}- Open Apps Script editor:
clasp open
- Click Deploy > Test deployments
- Under Gmail Add-on, click Install
- Open Gmail and refresh - the add-on appears in the right sidebar
- In Apps Script editor, click Deploy > New deployment
- Click the gear icon, select Add-on
- Fill in the deployment details:
- Description: "Nyuchi Email Signature v1.0"
- Click Deploy
- Copy the Deployment ID
For Workspace Admins:
- Go to Google Admin Console
- Navigate to Apps > Google Workspace Marketplace apps > Apps list
- Click Add app > Add internal app
- Enter your Deployment ID from Step 4
- Configure installation settings:
- Automatic installation: Choose domains/OUs
- Manual installation: Users install themselves
- Click Finish
For Individual Users (if allowed):
- Open Gmail
- Click the + icon in the right sidebar
- Search for your add-on or paste the deployment link
- Click Install and authorize
- Open Gmail in a browser (not mobile)
- Look for the Nyuchi bee icon in the right sidebar
- Click to open and test the User/Admin tabs
- Deploy from Apps Script editor:
- Click Deploy > New deployment
- Select type: Web app
- Execute as: "User accessing the web app"
- Who has access: "Anyone within [your domain]"
- Click Deploy and copy the URL
- Access the dashboard via the deployment URL
- Or use the "Open Dashboard" button from the Admin tab
{
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.settings.basic",
"https://www.googleapis.com/auth/gmail.settings.sharing",
"https://www.googleapis.com/auth/admin.directory.user.readonly",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.scriptapp",
"https://www.googleapis.com/auth/userinfo.email"
]
}For Admin tab functionality:
- Go to Google Admin Console > Security > API Controls
- Click Manage Domain Wide Delegation
- Add your OAuth Client ID with scopes:
https://www.googleapis.com/auth/admin.directory.user.readonlyhttps://www.googleapis.com/auth/gmail.settings.basichttps://www.googleapis.com/auth/gmail.settings.sharing
| Function | Description |
|---|---|
onHomepage(e) |
Gmail add-on entry point |
buildTabbedCard(tab) |
Render User/Admin tabs |
generateUserSignatureHtml(settings) |
User self-service signature |
generateAdminSignatureHtml(user, email) |
Admin deployment signature |
getAllDomainUsers() |
Fetch all domain users |
updateAllFromDashboard() |
Bulk signature deployment |
doGet(e) |
Web app entry point |
| Function | Returns |
|---|---|
getCurrentUserInfo() |
{ email, name } |
getDashboardData() |
{ users[], totalUsers, totalAliases } |
getSignaturePreview(brandKey) |
HTML signature string |
getUserSignaturePreview(email) |
{ name, email, signatureHtml } |
updateSingleUserFromDashboard(email) |
{ success, updated, user } |
updateAllFromDashboard() |
{ success, failed, total } |
- Test deployment: Deploy as "Head" deployment for testing
- Refresh Gmail to see add-on in sidebar
- Test User tab: Configure and apply personal signature
- Test Admin tab: Preview and update test user
// Run these in Apps Script editor
testSignatureGeneration() // Test HTML output
testDivisionDetection() // Test email-to-brand mapping
testFlagColors() // Verify Zimbabwe flag CSS
testMySignature() // Preview your own signature
runAllTests() // Complete test suite- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- nyuchi-brand-assets - Brand system and design tokens
- nyuchi-app-script - Google Cloud Project
This project is licensed under the MIT License - see the LICENSE file for details.
Nyuchi Web Services services.nyuchi.com
Developer: Bryan Fawcett (@bryanfawcett)
- Issues: GitHub Issues
- Brand Guidelines: brand.nyuchi.com
- Documentation: docs.nyuchi.com
Built with Ubuntu • Powered by Community