En enkel, pen nettside for å selge hjemmebakte cookies på bestilling. Hovedpoenget: du åpner for bestilling, og siden stenger seg selv automatisk når grensen er nådd – så du slipper å stoppe manuelt. Du kan også åpne/stenge når du vil, kjøre «kom og kjøp»-direktesalg, og samle en venteliste.
Alt styres fra ett Google-regneark + én Google Drive-mappe med bilder. Ingen koding i hverdagen – det meste kan gjøres fra mobilen.
Nettsiden (index.html, GitHub Pages)
│ henter status + bilder
▼
Google Apps Script (Code.gs) ──► Google-regneark (Innstillinger, Innhold,
▲ Bestillinger, Venteliste)
│ lister bilder ──► Google Drive-mappe (bilder)
- Innstillinger – status, grense, pris, Vipps-nummer, hentested
- Innhold – all tekst på siden (navn, slagord, beskrivelse)
- Bestillinger – kommer inn her automatisk
- Venteliste – navn/kontakt når det er stengt
- Drive-mappe – bildene i galleriet
- Gå til sheets.new og lag et nytt regneark. Kall det f.eks. «Milla's Chunky Cookies».
- I Google Drive: Ny → Mappe, kall den f.eks. «Cookie-bilder».
- Høyreklikk mappen → Del → endre til «Alle med lenken» = Seer.
- Åpne mappen og kopier ID-en fra adressefeltet:
https://drive.google.com/drive/folders/DETTE_ER_ID-EN - Legg noen cookie-bilder i mappen (kan gjøres senere).
- I regnearket: Utvidelser → Apps Script.
- Slett alt i
Code.gs, lim inn hele innholdet fra denne mappensCode.gs. - Øverst i fila, fyll inn:
- La
SHEET_IDstå tom ('') – scriptet er allerede knyttet til regnearket. (Ikke lim inn URL-en her.) BILDE_MAPPE_ID= ID-en fra steg B3VARSEL_EPOST= e-posten din (få varsel ved nye bestillinger). Kan stå tom.
- La
- Lagre (💾).
- I Apps Script: velg funksjonen
settUppRegnearki nedtrekksmenyen → trykk Kjør. - Godkjenn tilgang når Google spør (din egen konto).
- Gå tilbake til regnearket – nå finnes fanene Innstillinger, Innhold, Bestillinger, Venteliste med standardverdier. ✅
- I Apps Script: Deploy → New deployment.
- Tannhjul → velg Web app.
- Sett:
- Execute as: Me
- Who has access: Anyone
- Deploy → kopier web-app-URL-en (slutter på
/exec).
Endrer du
Code.gssenere, må du Deploy → Manage deployments → rediger (blyant) → Version: New version → Deploy for at endringen skal bli live.
- Åpne
index.html, finnCONFIGnær toppen av<script>. - Lim web-app-URL-en inn i
APPS_SCRIPT_URL:const CONFIG = { APPS_SCRIPT_URL: "https://script.google.com/macros/s/.../exec", ...
- Lagre. (Står den tom, viser siden et pent demo-innhold så du kan se designet.)
- Lag et nytt GitHub-repo og last opp
index.html(+ ev.og-image.jpg). - Settings → Pages → Branch: main / root → Save.
- Etter et minutt er siden live på
https://<brukernavn>.github.io/<repo>/.
(valgfritt) Legg en fin cookie-bilde-fil som og-image.jpg i repoet for penere
forhåndsvisning når lenken deles på Facebook/Instagram.
Alt gjøres i regnearket, fanen Innstillinger – endringer vises på siden ved neste sideoppdatering.
Sett status:
| Verdi | Hva skjer på siden |
|---|---|
BESTILLING_ÅPEN |
Bestillingsskjema vises – «X pakker igjen» |
BESTILLING_STENGT |
Venteliste vises i stedet |
DIREKTESALG |
«Kom og kjøp nå!» med hentested/tid |
UTSOLGT |
«Alt er utsolgt» + venteliste |
Sett maks_pakker (f.eks. 60). Når summen av bestilte pakker når grensen, låser
siden seg selv og viser «Utsolgt» – uansett om status står på åpen. Du trenger ikke gjøre
noe. Vil du ta imot flere, øk maks_pakker.
pris_per_pakke, vipps_nummer, hentested, hentetid, neste_batch – bare skriv om i
Innstillinger.
Fanen Innhold: firmanavn, slagord, produkt_beskrivelse, direktesalg_tekst,
facebook_url (lenke til Facebook-siden – vises som knapp i bunnen og på venteliste-visningen).
Dra nye bilder inn i Drive-bildemappen (eller slett gamle). De vises i galleriet automatisk (kan ta opptil et par minutter pga. mellomlagring). Vil du ha bildetekst, gi filen et passende navn (f.eks. «Sjokolade og havsalt.jpg»).
Det ligger allerede ekte cookie-bilder i mappen
images/i prosjektet. Disse brukes som galleri/standard, og vises også hvis Drive-mappen er tom. Galleriet bytter automatisk til Drive-bildene så snart du legger noen der.
Siden viser en «Cookies i bevegelse»-seksjon med Reels bygd inn fra Facebook. Vil du legge
til/fjerne reels, rediger listen REELS øverst i <script>-delen av index.html (lim inn
delingslenken til hver reel). Bygger på Facebooks offisielle video-plugin – noen reels kan
være skjult hvis personvernet på reelen ikke er «offentlig».
Fanen Bestillinger fylles automatisk. Får du varsel-e-post (hvis satt opp), ser du hver nye bestilling med en gang. Venteliste-fanen samler dem som vil varsles.
Fanen Bakeliste gir en lettlest oversikt som oppdaterer seg selv: totalt antall
pakker/cookies å bake øverst, og en ren liste under (Navn · Antall · Telefon · Kommentar).
Funker også i Google Sheets-appen på mobil. Lages av settUppRegneark(), eller kjør
funksjonen lagBakeliste i Apps Script for å (gjen)opprette den.
Kjøre nytt parti? Mange velger å tømme/arkivere gamle rader i Bestillinger før de åpner igjen, så «X pakker igjen» teller fra null for det nye partiet.
Versjon 1 bruker Vipps ved henting med privat Vipps – krever ikke ENK/org.nr.
Siden viser «Betal X kr til Vipps <nummer> ved henting» i bekreftelsen.
Vil du senere ha en ekte «Betal med Vipps»-knapp på siden, trenger du et
organisasjonsnummer. Å registrere et ENK i Enhetsregisteret er gratis og gir deg org.nr.
(den betalte Foretaksregisteret-registreringen kreves normalt bare ved videresalg av
innkjøpte varer – egenbakte cookies regnes som produksjon). Med org.nr. kan du skru på
Vipps Go / Vipps på Nett, og kun «betalings-blokka» i index.html byttes ut. Vurder også
skatt (hobby vs. næring) og evt. registrering hos Mattilsynet når salget vokser.
| Problem | Sjekk |
|---|---|
| Siden viser demo-innhold | APPS_SCRIPT_URL er tom eller feil i index.html. |
Endring i Code.gs vises ikke |
Du må deploye ny versjon (Manage deployments). |
| Bilder vises ikke | Mappen må være delt «Alle med lenken = Seer», og BILDE_MAPPE_ID riktig. |
| Bestilling lagres ikke | Web-appen må være «Who has access: Anyone». |
| Teller feil antall | maks_pakker minus summen i Bestillinger-fanen (kolonne «Antall pakker»). |