Regneark på jobben

Hva er GAS (Google Apps Script)?
Automatiser Google Regneark – en introduksjon

Gjøre om en tabell til samme form hver uke. Slette tomme rader fra innlimte data. Merke rader som oppfyller en betingelse. Regneark er fulle av oppgaver med faste trinn.

Det er GAS (Google Apps Script) som gjør slike oppgaver automatisk. Denne artikkelen viser hva GAS kan gjøre, hvor du begynner og hvordan du kommer deg gjennom «autorisasjons»-skjermene som mange står fast på første gang.

Hva er GAS?

GAS er Googles måte å kjøre programmer på. Det bruker samme syntaks som JavaScript og styrer Google Regneark og også Gmail, Google Kalender, Google Disk og Google Skjemaer.

Du trenger bare en Google-konto. Det er gratis og ingenting må installeres: åpne et regneark i nettleseren og begynn å skrive. Programmet kjører på Googles servere, ikke på datamaskinen din.

Innspilte makroer og GAS

Google Regneark har «makroer» som tar opp det du gjør, slik at du kan gjenta det så mange ganger du vil. Start opptaket med «Utvidelser» → «Makroer» → «Ta opp makro», merk og skriv i celler, så blir handlingene dine lagret som GAS-kode.

Opptak: skrive «test» i B2 og gjøre det fet
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B2').activate();
  spreadsheet.getCurrentCell().setValue('test');
  spreadsheet.getActiveRangeList().setFontWeight('bold');
};

En makro er altså GAS. Selv om du gir makroen et navn som «Fet-test», heter funksjonen i koden myFunction. Navnet i menyen og funksjonsnavnet lagres hver for seg.

Under opptaket velger du i feltet nederst «Bruk absolutte referanser» eller «Bruk relative referanser». Absolutte referanser lagres som celleadresser som B2, så makroen skriver alltid på samme sted uansett hvilken celle som er merket. Relative referanser lagres som «én rad under gjeldende celle» og tar utgangspunkt i den merkede cellen.

Opptak alene takler ikke tabeller der lengden endrer seg, eller trinn som avhenger av betingelser. Derfra leser du den innspilte koden og bygger videre på den.

Dette kan du gjøre med GAS

  • Slette tomme rader fra innlimte data og formatere overskriftene
  • Se på beløp eller datoer og skrive «Stor» eller «Forfalt» i en kolonne
  • Legge til en egen meny i regnearket og kjøre oppgaver som med en knapp
  • Lage egne funksjoner til bruk i celler (egendefinerte funksjoner)
  • Sende e-post med Gmail ut fra en tabell
  • Kjøre en oppgave på et fast tidspunkt, for eksempel hver morgen kl. 8 (utløsere)
  • Kopiere svar fra Google Skjemaer til et annet ark når de kommer inn

For hånd tar hver av disse oppgavene alt fra noen minutter til flere titalls minutter. Skriv koden én gang, så holder det med et klikk i en meny – eller den kjører helt av seg selv.

Slik kommer du i gang med GAS

  1. Åpne regnearket og velg «Utvidelser» → «Apps Script»
  2. Redigeringsprogrammet åpnes i en ny fane: «Kode.gs» til venstre og function myFunction() { } til høyre
  3. Skriv koden inne i { } og lagre (Ctrl+S, på Mac ⌘+S)
  4. Klikk på «▷ Kjør» øverst. Resultatet vises nederst i «Kjøringslogg»
Et første skript: les A1, logg det og skriv i B1
function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const value = sheet.getRange('A1').getValue();
  Logger.log(value);
  sheet.getRange('B1').setValue('Kontrollert');
}

Logger.log skriver en verdi i kjøringsloggen. Tall vises med desimalpunktum, for eksempel 120.0 (console.log viser 120). Hvis noe ikke fungerer som forventet, sjekker du først verdiene i loggen.

Autorisasjonsskjermene ved første kjøring

Første gang du kjører koden din, spør en skjerm om skriptet kan lese og redigere regnearket ditt. Mange står fast her, så vi går gjennom det trinn for trinn.

  1. «Autorisering kreves» → Gjennomgå tillatelser / OK
  2. Velg en konto
  3. «Google har ikke bekreftet denne appen» → «Avansert» nede til venstre
  4. «Gå til (prosjektnavn) (utrygt)»
  5. Sjekk hva du tillater, og klikk på «Tillat» (er det punkter å velge, velg dem og klikk på «Fortsett»)

«Google har ikke bekreftet denne appen» er en advarsel for skript Google ikke har gjennomgått. Skript du har skrevet og makroer du har tatt opp, er ikke gjennomgått, så denne skjermen vises alltid. Har du laget det selv, kan du trygt fortsette.

Vises skjermen derimot i et regneark du har fått av en du ikke kjenner, velger du «Tilbake til sikkerhet». Når det er tillatt, kan skriptet bruke kontoen din til å jobbe med regnearkene og e-posten din.

Skriver du /** @OnlyCurrentDoc */ først i koden, får skriptet bare røre «dette regnearket», og tillatelsene som kreves, blir smalere. Innspilte makroer har det fra starten.

Du kan gå gjennom de samme trinnene i oppdrag 1 i øvingen.

Vanlig kode

Her er det du bruker oftest når du jobber med et regneark. Rad- og kolonnenumre starter på 1, mens indeksene i en matrise lest med getValues starter på 0.

KodeBetydning
const sheet = SpreadsheetApp.getActiveSheet();Arket som er åpent nå
sheet.getRange('A1').getValue()Les verdien i A1
sheet.getRange('A1').setValue('Fullført')Skriv i A1
sheet.getRange(2, 3)Rad 2, kolonne 3 (C2). Kolonner kan angis som tall
sheet.getRange('A2:C10').getValues()Les et område på én gang (todimensjonal matrise)
sheet.getRange(2, 1, 9, 3).setValues(values)Skriv på én gang (rader og kolonner som i matrisen)
sheet.getLastRow()Nummeret på den siste raden med en verdi
sheet.appendRow(['10/31', 'Sato', 5000])Legg til en rad under den siste
sheet.deleteRow(5)Slett rad 5 (radene under flyttes opp)
sheet.getRange('A1:D1').setFontWeight('bold')Gjør fet
sheet.getRange('A1:D1').setBackground('#fff2cc')Angi bakgrunnsfarge
Logger.log(value)Skriv i kjøringsloggen (for å sjekke verdier)
Gå gjennom alle rader og skill etter en betingelse
function judgeTargets() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for (let row = 2; row <= sheet.getLastRow(); row++) {
    const sales = sheet.getRange(row, 2).getValue();
    const target = sheet.getRange(row, 3).getValue();
    if (sales >= target) {
      sheet.getRange(row, 4).setValue('Nådd');
    } else {
      sheet.getRange(row, 4).setValue('Ikke nådd');
    }
  }
}
Legg til en egen meny når filen åpnes (onOpen)
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Månedsavslutning')
    .addItem('Merk store salg', 'markLarge')
    .addToUi();
}

En funksjon som heter onOpen, kjører automatisk når regnearket åpnes. Kjører du den med «▷ Kjør» i redigeringsprogrammet, får du feilen Cannot call SpreadsheetApp.getUi() from this context., så lagre og åpne regnearket på nytt for å sjekke.

Sende e-post og kjøre etter tidsplan med utløsere

Det folk oftest søker etter om GAS, er e-post og utløsere.

Send e-post til adressene i en tabell
function sendReminders() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
  rows.forEach(([name, email]) => {
    MailApp.sendEmail(email, 'Påminnelse om frist', name + ',\n\nfristen er denne fredagen.');
  });
}

Det finnes en grense: en gratis Google-konto kan sende opptil 100 e-poster per dag (Google Workspace-kontoer flere). Én kjøring kan vare i maks 6 minutter; etter det stopper den med «Exceeded maximum execution time».

For å kjøre etter tidsplan klikker du til venstre i redigeringsprogrammet på «Utløsere» (klokkeikonet) → «Legg til utløser» og velger funksjonen og «Tidsstyrt». Du kan angi et tidspunkt hver dag, uke eller måned.

E-post sendes på ordentlig selv når du bare prøver. Test først med en tabell som bare inneholder din egen adresse.

Forskjeller fra VBA i Excel

GASVBA i Excel
KodeJavaScriptVBA(Visual Basic)
Hvor det kjørerGoogles servereExcel på din egen datamaskin
Hva du trengerEn nettleser og en Google-kontoSkrivebordsversjonen av Excel (hovedsakelig på Windows)
Kobles tilGmail, Kalender, Disk, SkjemaerWord, Outlook, filer på datamaskinen
Kjøre etter tidsplanMed utløsere (kjører selv når datamaskinen er av)Kombinert med Oppgaveplanlegging i Windows eller lignende

Ideene er de samme i begge: lese celler, skrive, gjenta og skille etter betingelser. Kan du det ene, kan du lese det andre. Excel-makroer forklarer vi i introduksjonen til makroer i Excel.

Øv i nettleseren

I nettstedets simulering av makroer og GAS øver du ved å kjøre ekte kode i et virtuelt regneark og et Apps Script-redigeringsprogram. Du fyller ut hull i koden, og på mobilen velger du hvert hull blant fire alternativer.

  1. Kapittel 1 Ta opp og kjøre makroer

    Kjør en innspilt makro og ta opp en egen. Absolutte og relative referanser, å lese og endre innspilt kode.

  2. Kapittel 2 Lese, gjenta, skille

    Les celler med getValue, skriv med setValue og sjekk verdier i kjøringsloggen. Gå gjennom alle rader med for og skill med if.

  3. Kapittel 3 Case: rydde i månedens salgstabell

    Slett tomme rader, merk store salg på én gang og kjør det fra en egen meny. Til slutt en egen funksjon for celler.

Start simuleringen (13 oppdrag) →

Slik lærer du GAS

En god start er å «Ta opp makro» i et av dine egne regneark og lese koden som kommer ut. Da ser du lettere hva hver kommando gjør.

Generativ KI kan også skrive kode. Men for å vurdere om den er riktig og hvor den må endres, må du kunne lese i alle fall «vanlig kode» i denne artikkelen.

* Skjermnavn og grenser gjelder per oktober 2026 og kan endres når Google oppdaterer.

* Google Regneark er et varemerke som tilhører Google LLC. Dette nettstedet har ingen tilknytning til Google.