Dashboard
Edit any section using the left sidebar — Hero, About, Book, Gallery, Events, etc.
Click "Save" inside each section to store your changes.
Click "↑ Sync to Website" (top right) to push all saved changes to Google Sheets — your live website reads from Sheets automatically.
First time? Go to Settings and follow the 4-step Google Apps Script guide.
Public image URL for the hero portrait photo. Google Drive: use https://drive.google.com/uc?export=view&id=FILE_ID
These appear in the "How I Create Value" grid on your website.
Paste a public image URL showing you at this speaking event. Will appear as proof on your website.
Google Drive: share file publicly → use: https://drive.google.com/uc?export=view&id=FILE_ID
This controls the book section on your website. Fill in your book details here.
Public URL to your book cover image.
Paste a public image URL for the blog post cover. Google Drive: share → use https://drive.google.com/uc?export=view&id=FILE_ID
Create a free form at formspree.io and paste the endpoint URL here. This makes your contact form send emails.
Paste the URL from your deployed Google Apps Script. See guide below.
Create a Google Sheet — go to sheets.google.com, create a new spreadsheet. Name it "Nana Boateng Website".
Open Apps Script — inside the spreadsheet click Extensions → Apps Script. A code editor opens.
Paste the code below, replacing everything in the editor. Click Save (Ctrl+S).
Deploy → New Deployment → Web App. Set "Execute as: Me" and "Who has access: Anyone". Click Deploy. Copy the web app URL and paste it above.
const SS = SpreadsheetApp.getActiveSpreadsheet();
function doGet(e) {
const r = { content:{}, gallery:[], blog:[], speaking:[], events:[], testimonials:[] };
try{ const s=SS.getSheetByName('Content'); if(s&&s.getLastRow()>0) s.getDataRange().getValues().forEach(row=>{ if(row[0]) r.content[row[0]]=row[1]||''; }); }catch(e){}
try{ const s=SS.getSheetByName('Gallery'); if(s&&s.getLastRow()>1){ const d=s.getDataRange().getValues(); for(let i=1;i1){ const d=s.getDataRange().getValues(); for(let i=1;i1){ const d=s.getDataRange().getValues(); for(let i=1;i1){ const d=s.getDataRange().getValues(); for(let i=1;i1){ const d=s.getDataRange().getValues(); for(let i=1;i0?s.getDataRange().getValues():[]; let f=false; for(let i=0;i Clear all locally cached admin data (does not delete your Google Sheet).