Automasjonsmagi - Koble ChatGPT og Google Sheets

Hans Martin Cramer
18.3.2024
 min

En av de aller mest tidkrevende oppgavene som finnes er å manuelt analysere kvalitativ data. For eksempel sitter nærmest hver eneste nettbutikk med et hav av kundeanmeldelser som bare gjennomgås hvert skuddår når en stakkars utskremt sjel får ånden over seg. Og opplevelsen den sjelen har i analysen gjør at personen neppe vil gjøre det igjen. Men verdien av dataene i feedbacken er enorm for alle i organisasjonen. Så hva om vi kunne gjøre den oppgaven automatisk?

ChatGPT er en mester i tekstanalyse

Med språkmodellenes inntog har en ny æra i analyse kommet. ChatGPT er virkelig god på å trekke ut informasjon av tekst. For eksempel kan den klassifisere om noe er positivt eller negativt eller angi hva det er en tekst egentlig handler om. Og det beste av alt er at det kan automatiseres - og det i et av verktøyene du allerede sitter på!

Hva trenger jeg?

For å gjøre dette er det to ting du må ha:

  1. ChatGPT plus abonnement og API nøkler
    1. Et ChatGPT plus abonnement får du på https://chat.openai.com.
    2. API nøkler kan du lage her: https://platform.openai.com/api-keys
  2. En Google konto med tilgang til Google Sheets

💡 Hot tips før vi går igang med oppskrifter er å bruke ChatGPT til feilsøking underveis. Dersom du står fast eller får feilmeldinger når du går gjennom oppskriften så er den raskeste veien til svar å bruke ChatGPT som hjelpetjeneste. Gi litt kontekst om hva du prøver å få til og så vil ChatGPT kunne hjelpe deg steg for steg.

Et annet poeng som er viktig å huske på er at bruken av OpenAI sitt API koster noen små cent for hver operasjon man gjør. Nederst i denne artikkelen kan du se hva det koster med akkurat det vi gjennomførte for denne guiden.

Slik går du i gang

La oss lage oss litt eksempeldata som vi kan jobbe med. Åpne en chat og be om noe tilsvarende dette:

Tenk at du er en kunde på en nettbutikk for dyremat. Du går inn på nettsiden, lager en konto, finner et produkt, legger den i handlekurven og gjennomfører et kjøp. Kan du generere 20 ulike eksempler på feedback som inneholder ulike opplevelser med nettsiden?

Strukturer eksemplene som en tabell der første kolonne inneholder en tittel-setning, andre kolonne inneholder selve  feedbacken, tredje kolonne inneholder brukerens navn.

Ikke gjør feedbacken lengre enn 5 setninger. Sørg også for at det er noen positive og noen negative tilbakemeldinger.

Da vil ChatGPT generere noe tilsvarende dette:

Kopier den genererte feedbacken over i et blankt Google sheet. Når du har limt inn er et godt tips å forbedre lesbarheten litt så marker kolonnene og bryt teksten i cellene slik:

Deretter kan du justere bredden på kolonnene slik at det blir lesbart for deg i etterkant.

Apps Script

Neste steg er å lage et script som du kan bruke for å sende informasjon frem og tilbake til ChatGPT for analyse. Dette skal vi gjøre i en utvidelse som heter Apps Script i Google Sheets. Utvidelsen finner du i menyen under Extensions (Utvidelser på norsk) > Apps Script :

Når du har åpnet Apps Script får du opp en tom fil (Code.gs) med eksempelkode.

Denne eksempelkoden kan du slette og og erstatte med følgende script:

function AI(systemPrompt, userPrompt, temperature, max_tokens) {
 var apiKey = 'YOUR_API_KEY'; // Replace with your actual API key
 var organizationId = 'YOUR_ORGANIZATION'; // Replace with your actual Organization ID
 var data = {
   "model": "gpt-3.5-turbo", // Specify the model here
   "messages": [
     {"role": "system", "content": systemPrompt},
     {"role": "user", "content": userPrompt}
   ],
   "temperature": temperature,
   "max_tokens": max_tokens
 };
 var options = {
   "method" : "post",
   "contentType": "application/json",
   "headers": {
     "Authorization": "Bearer " + apiKey,
     "OpenAI-Organization": organizationId
   },
   "payload" : JSON.stringify(data),
   "muteHttpExceptions": true // This allows you to see the full error message if there's a failure
 };
 var response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", options);
 var responseData = JSON.parse(response.getContentText());
 if (responseData.choices && responseData.choices.length > 0) {
   return responseData.choices[0].message['content'].trim();
 } else {
   // Handle the case where no choices are returned
   Logger.log('No choices available in the response');
   return 'No response or unexpected response structure.';
 }
}

(Som et lite apropos her så er scriptet laget av ChatGPT 🤖)

I scriptet er det to ting du må endre på - Legg inn openAI API nøkkel der det står YOUR_API_KEY og evt organizationID i YOUR_ORGANIZATION. Hvis OpenAI-kontoen din ikke er en del av en organisasjon så kan du slette den linjen i scriptet.

Hvis du ønsker kan du også endre hvilken modell du ønsker å bruke. Oversikten over de ulike modellene finner du her, men for dette tilfellet er det tilstrekkelig med gpt-3.5-turbo

Gi prosjektet et navn (der det står Untitled project). Når du har det på plass lagrer du scriptet ved å klikke på den litt rart plasserte disketten 💾.

Med scriptet på plass så kan du begynne å bruke kommandoen =AI() i regnearket. Selve scriptet funker sånn at du i en celle kan skrive =AI(A1, B1, C1, D1) så vil det funke slik:

  • A1 er systemprompt (av typen "Du er en analytiker som skal vurdere om noe positivt eller negativt)
  • B1 er det som skal analyseres (i vårt tilfelle kundefeedbacken)
  • C1 er temperaturen den skal jobbe med (fra 0.0-1.0 - sier noe om hvor kreativ den skal være)
  • D1 er maks tokens den skal bruke (Tokens kan være litt vanskelig å forstå, men du kan lese litt mer om det her. I vårt eksempel kan vi holde oss til maks 2-300 tokens).

Du kan bytte ut cellereferansene med tall eller tekst direkte i funksjonen, f.eks. =AI([instruks],kundefeedback],0.5,200)

Be ChatGPT å analysere data

Når vi skal sette i gang med analysen vår trenger vi også å konstruere et prompt. Et prompt er instruksjonen man gir til ChatGPT om hva som skal gjøres. I dette tilfellet skal vi gjøre en sentimentanalyse.

For å holde regnearket litt ryddig anbefaler jeg deg å opprette et nytt “sheet/ark” og kalle det Prompts. Det gjør du slik:

I det nye regnearket kan du legge dette promptet i celle A1  (💡 dobbeltklikk på cellen så du får hele promptet inne i en celle).

Du er en produktsjef som analyserer kundetilbakemeldinger.
Bestem sentimentet for kundetilbakemeldingen, velg kun mellom tre alternativer: "Negativ", "Positiv", "Nøytral".
IKKE gi ut mer enn ett sentiment. IKKE list opp eksempler på sentiment i responsen.
Skriv kun ut sentimentet og absolutt ingenting annet.

Nedenfor er noen eksempler på tilbakemeldinger og relaterte sentiment som du ville ha utgitt.
Tilbakemeldingene er kun eksempler.

Tilbakemelding: "dette er den verste pastaen jeg noen gang har spist"
Sentiment: Negativ

Tilbakemelding: "Bygningen ble bygget på en interessant måte, med mange skjulte tunneler og passasjer"
Sentiment: Nøytral

Tilbakemelding: "Jeg har alltid ønsket å besøke Louvre, og dette besøket skuffet ikke"
Sentiment: Positiv

Svar på norsk: Positiv, Negativ, Nøytral

Svar kun med ett ord.

Gå tilbake til regnearket med kundefeedbacken.

I celle D1 skriver du “Sentimentanalyse”.

I celle D2 legger du inn følgende formel =AI(Prompts!A$1,B2,0,100) . Denne funksjonen kaller på scriptet vårt, bruker promptet vi la inn, velger feedbacken i celle B2, gir den en temperatur på 0 (vi vil at den skal være presis her), bruker maks 100 tokens. Etter litt lastetid vil du få resultatet av analysen:

I og med at vi har brukt $-tegnet i Prompts!A$1 så kan vi nå kopiere denne cellen nedover hele kolonnen og vipps har du et analysert datasett som du kan lage blant annet statistikk på og bruke for eksempel i prioriteringsarbeid.

Når vi har gjort sentimentanalysen kan det være en idé å kategorisere feedbacken. Her er et eksempel på et prompt du kan bruke til det:


Du er en produktsjef som analyserer kundetilbakemeldinger. Bestem kategorien for kundetilbakemeldingen, velg kun blant følgende alternativer: "Visuelt design", "Onboarding", "Sikkerhet/SSO", "Nettstedets ytelse", "Informasjonsarkitektur", "Kontoinnstillinger", "Varsler", "Betalinger", "Kundeservice", "Frakt", "Produktkvalitet".

Velg kun én kategori. Ikke list opp eksempler på kategorier i svaret. Gi kun kategorien og absolutt ingenting annet.

Svar på norsk


Her kan du endre kategoriene til noe som passer det du jobber med.

Lim inn promptet i arket “Prompts” i celle A2

Gå tilbake til regnearket med kundefeedbacken.

I celle E1 skriver du “Sentimentanalyse”.

I celle E1 legger du inn følgende formel =AI(Prompts!A$2,B2,0,100) . På samme måte som i stad så kaller  funksjonen på scriptet vårt, bruker kategoriseringspromptet vi la inn, velger feedbacken i celle B2, gir den en temperatur på 0 (vi vil at den skal være presis her), bruker maks 100 tokens.

Hva koster det?

Hvert kall til ChatGPT koster noen små cent. Å be om det jeg har beskrevet over kostet meg nå $0,01.

For å begrense kostnadene mest mulig bør du (etter du er ferdig med analysen) bytte ut funksjonene i regnearket med selve resultatet av analysen. Dette kan du gjøre enkelt ved å kopiere alle cellene der du har fått resultater fra ChatGPT og så lime inn igjen kun verdiene. Å kopiere gjør man på vanlig vis CTRL+C / Cmd+C. Å lime inn kun verdiene gjør man ved å høyreklikke der du ønsker å lime inn og velge paste special > Values only.

Da slipper du at funksjonene kjører på nytt neste gang du åpner regnearket.

Kun fantasien begrenser hva du kan automatisere

Eksemplene vi gikk gjennom over er noen helt enkle operasjoner man kan gjøre. Men det er mange andre bruksområder også. Kanskje du har et sett av nettadresser du trenger å generere søkord til? Eller kanskje du har en oversikt over varer du har på lager som du skulle hatt enkle beskrivelser på? Dette og mye mer er enkelt å sette opp på samme måte - du definerer et prompt og inkluderer det i en formel.

Dersom du synes det er litt skummelt å bruke script til dette så finnes det også kommersielle utvidelser til Google Sheet som gjør samme jobben, men her må raskt også betale for tilgang. Vi har tidligere laget noen videoer som går gjennom disse og de finner du på vår Youtube-kanal. Her er et eksempel:

Dersom du fikk litt fot for å bringe AI inn i arbeidsflyten din etter dette så er vi i Oschlo her for å hjelpe deg å komme videre. Ta kontakt med oss så hjelper vi deg med å ta steget inn i den automagiske hverdagen 🤖

Bloggen vår

Siste bloggposter fra Oschlo

Vil du også jobbe i Oschlo?
Vi er på jakt etter flere gode produktledere! Send oss en søknad, spørsmål eller bare en melding så tar vi en kaffeprat!
KOntakt oss