5 Google Sheets Script-funktioner, du skal kende

Google Sheets er et kraftfuldt skybaseret regnearksværktøj, der lader dig gøre næsten alt, hvad du kan gøre i Microsoft Excel . Men den virkelige kraft ved Google Sheets er Google Scripting -funktionen, der følger med.

Google Apps scripting er et baggrundsscriptværktøj, der ikke kun fungerer i Google Sheets(in Google Sheets) , men også Google Docs, Gmail, Google Analytics og næsten alle andre Google -skytjenester. Det lader dig automatisere disse individuelle apps og integrere hver af disse apps med hinanden.

I denne artikel lærer du, hvordan du kommer i gang med Google Apps - scripting, oprettelse af et grundlæggende script i Google Sheets til at læse og skrive celledata og de mest effektive avancerede Google Sheets -scriptfunktioner.

Sådan opretter du et Google Apps-script(How to Create a Google Apps Script)

Du kan komme i gang lige nu med at oprette dit første Google Apps -script inde fra Google Sheets

For at gøre dette skal du vælge Værktøjer(Tools) i menuen og derefter Script Editor .

Dette åbner scriptredigeringsvinduet og bruger som standard en funktion kaldet myfunction() . Det er her, du kan oprette og teste dit Google Script .

For at give det en chance, prøv at oprette en Google Sheets -scriptfunktion, der læser data fra én celle, udfører en beregning på den og udsender datamængden til en anden celle.

Funktionen til at hente data fra en celle er funktionerne getRange() og getValue() . Du kan identificere cellen efter række og kolonne. Så hvis du har en værdi i række 2 og kolonne 1 (A-kolonnen), vil den første del af dit script se sådan ud:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

Dette gemmer værdien fra den pågældende celle i datavariablen(data) . Du kan udføre en beregning på dataene og derefter skrive disse data til en anden celle. Så den sidste del af denne funktion vil være:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

Når du er færdig med at skrive din funktion, skal du vælge diskikonet for at gemme. 

Første gang du kører en ny Google Sheets -scriptfunktion som denne (ved at vælge kørselsikonet), skal du give autorisation(Authorization) for at scriptet kan køre på din Google-konto(Google Account) .

Tillad tilladelser for at fortsætte. Når dit script kører, vil du se, at scriptet skrev beregningsresultaterne til målcellen.

Nu hvor du ved, hvordan man skriver en grundlæggende Google Apps -scriptfunktion, lad os tage et kig på nogle mere avancerede funktioner.

Brug getValues ​​til at indlæse arrays(Use getValues To Load Arrays)

Du kan tage konceptet med at lave beregninger på data i dit regneark med scripting til et nyt niveau ved at bruge arrays. Hvis du indlæser en variabel i Google Apps -scriptet ved hjælp af getValues, vil variablen være en matrix, der kan indlæse flere værdier fra arket.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

Datavariablen er et multidimensionelt array, der indeholder alle data fra arket. For at udføre en beregning på dataene bruger du en for -løkke. Tælleren for for-løkken vil arbejde gennem hver række, og kolonnen forbliver konstant, baseret på den kolonne, hvor du vil trække dataene.

I vores eksempelregneark kan du udføre beregninger på de tre rækker af data som følger.

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

Gem(Save) og kør dette script ligesom du gjorde ovenfor. Du vil se, at alle resultaterne er udfyldt i kolonne 2 i dit regneark.

Du vil bemærke, at henvisning til en celle og række i en matrixvariabel er anderledes end med en getRange-funktion. 

data[i][0] refererer til matrixdimensionerne, hvor den første dimension er rækken, og den anden er kolonnen. Begge disse starter ved nul.

getRange(i+1, 2) refererer til den anden række, når i=1 (da række 1 er overskriften), og 2 er den anden kolonne, hvor resultaterne er gemt.

Brug appendRow til at skrive resultater(Use appendRow To Write Results)

Hvad hvis du har et regneark, hvor du vil skrive data ind i en ny række i stedet for en ny kolonne?

Dette er nemt at gøre med appendRow- funktionen. Denne funktion generer ikke eksisterende data i arket. Det vil bare tilføje en ny række til det eksisterende ark.

Som et eksempel, lav en funktion, der tæller fra 1 til 10 og viser en tæller med multipla af 2 i en tællerkolonne(Counter) .

Denne funktion ville se sådan ud:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

Her er resultaterne, når du kører denne funktion.

Behandl RSS-feeds med URLFetchApp(Process RSS Feeds With URLFetchApp)

Du kan kombinere den tidligere Google Sheets -scriptfunktion og URLFetchApp for at trække RSS - feedet fra et hvilket som helst websted og skrive en række til et regneark for hver artikel, der for nylig er blevet offentliggjort på det pågældende websted.

Dette er dybest set en gør(DIY) -det-selv- metode til at oprette dit eget regneark til RSS- feedlæser!

Scriptet til at gøre dette er heller ikke for kompliceret.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

Som du kan se, trækker Xml.parse hvert element ud af RSS -feedet og adskiller hver linje i titel, link, dato og beskrivelse. 

Ved at bruge appendRow- funktionen kan du placere disse elementer i passende kolonner for hvert enkelt element i RSS - feedet.

Outputtet i dit ark vil se nogenlunde sådan ud:

I stedet for at indlejre RSS - feed - URL'en(URL) i scriptet, kan du have et felt i dit ark med URL'en(URL) og derefter have flere ark - et for hvert websted, du vil overvåge.

Sammenkæd strenge(Concatenate Strings) og tilføj(Add) en vognretur(Carriage Return)

Du kan tage RSS -regnearket et skridt videre ved at tilføje nogle tekstmanipulationsfunktioner og derefter bruge e-mail-funktioner til at sende dig selv en e-mail med en oversigt over alle nye indlæg i webstedets RSS - feed.

For at gøre dette, under det script, du oprettede i det foregående afsnit, vil du tilføje noget script, der vil udtrække alle oplysningerne i regnearket. 

Du vil gerne bygge emnelinjen og e-mailtekstens brødtekst ved at parse alle oplysningerne fra det samme "elementer"-array, som du brugte til at skrive RSS -dataene til regnearket. 

For at gøre dette skal du initialisere emnet og beskeden ved at placere de følgende linjer før "elementer" For-løkken.

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

Derefter, i slutningen af ​​"elementer" for loop (lige efter appendRow-funktionen), tilføjer du følgende linje.

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

"+" symbolet vil sammenkæde alle fire elementer efterfulgt af " " for en vognretur efter hver linje. I slutningen af ​​hver titeldatablok vil du have to vognretur for en pænt formateret e-mailtekst.

Når alle rækker er behandlet, indeholder "body"-variablen hele e-mail-meddelelsesstrengen. Nu er du klar til at sende e-mailen!

Sådan sender du e-mail i Google Apps Script(How To Send Email In Google Apps Script)

Den næste del af dit Google Script vil være at sende "emnet" og "brødteksten" via e-mail. At gøre dette i Google Script er meget nemt.

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

MailApp er(MailApp) en meget praktisk klasse i Google Apps - scripts, der giver dig adgang til din Google-kontos e-mail-tjeneste for at sende eller modtage e-mails. Takket være dette lader den enkelte linje med sendEmail-funktionen dig sende enhver e-mail(send any email) med kun e-mailadressen, emnelinjen og brødteksten.

Sådan vil den resulterende e-mail se ud. 

Ved at kombinere muligheden for at udtrække et websteds RSS - feed, gemme det i et Google Sheet og sende det til dig selv med URL - links inkluderet, gør det meget bekvemt at følge det seneste indhold for enhver hjemmeside.

Dette er blot et eksempel på den kraft, der er tilgængelig i Google Apps - scripts til at automatisere handlinger og integrere flere cloud-tjenester.



About the author

"Jeg er freelance-ekspert i Windows og Office. Jeg har over 10 års erfaring med at arbejde med disse værktøjer og kan hjælpe dig med at få mest muligt ud af dem. Mine færdigheder omfatter: at arbejde med Microsoft Word, Excel, PowerPoint og Outlook; skabe web sider og applikationer; og hjælpe kunder med at nå deres forretningsmål."



Related posts