5 Google Sheets-skriptfunktioner du behöver känna till

Google Sheets är ett kraftfullt molnbaserat kalkylarksverktyg som låter dig göra nästan allt du kan göra i Microsoft Excel . Men den verkliga kraften med Google Sheets är Google Scripting -funktionen som följer med.

Google Apps scripting är ett bakgrundsskriptverktyg som fungerar inte bara i Google Sheets(in Google Sheets) utan även i Google Dokument, Gmail, Google Analytics och nästan alla andra Googles(Google) molntjänster. Det låter dig automatisera dessa individuella appar och integrera var och en av dessa appar med varandra.

I den här artikeln lär du dig hur du kommer igång med Google Apps- skript, skapar ett grundläggande skript i Google Sheets för att läsa och skriva celldata och de mest effektiva avancerade Google Sheets -skriptfunktionerna.

Hur man skapar ett Google Apps-skript(How to Create a Google Apps Script)

Du kan komma igång redan nu och skapa ditt första Google Apps- skript från Google Kalkylark(Google Sheets)

För att göra detta, välj Verktyg(Tools) från menyn och sedan Skriptredigerare(Script Editor) .

Detta öppnar skriptredigeringsfönstret och förinställer en funktion som kallas myfunction() . Det är här du kan skapa och testa ditt Google-skript(Google Script) .

För att ge det en chans, försök skapa en Google Sheets -skriptfunktion som läser data från en cell, utför en beräkning på den och matar ut datamängden till en annan cell.

Funktionen för att hämta data från en cell är funktionerna getRange()(getRange()) och getValue() . Du kan identifiera cellen efter rad och kolumn. Så om du har ett värde i rad 2 och kolumn 1 (A-kolumnen), kommer den första delen av ditt skript att se ut så här:

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

Detta lagrar värdet från den cellen i datavariabeln(data) . Du kan utföra en beräkning av data och sedan skriva dessa data till en annan cell. Så den sista delen av denna funktion kommer att vara:

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

När du är klar med att skriva din funktion väljer du diskikonen för att spara. 

Första gången du kör en ny skriptfunktion för Google Kalkylark(Google Sheets) som denna (genom att välja körikonen) måste du ge auktorisering(Authorization) för att skriptet ska köras på ditt Google-konto(Google Account) .

Tillåt behörigheter att fortsätta. När ditt skript körs ser du att skriptet skrev beräkningsresultaten till målcellen.

Nu när du vet hur man skriver en grundläggande Google Apps -skriptfunktion, låt oss ta en titt på några mer avancerade funktioner.

Använd getValues ​​för att ladda arrayer(Use getValues To Load Arrays)

Du kan ta konceptet med att göra beräkningar på data i ditt kalkylblad med skript till en ny nivå genom att använda arrayer. Om du läser in en variabel i Google Apps- skriptet med getValues, kommer variabeln att vara en array som kan läsa in flera värden från arket.

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

Datavariabeln är en flerdimensionell matris som innehåller all data från arket. För att utföra en beräkning på datan använder du en for -loop. Räknaren för for-slingan kommer att arbeta genom varje rad, och kolumnen förblir konstant, baserat på kolumnen där du vill hämta data.

I vårt exempelkalkylblad kan du utföra beräkningar på de tre raderna med data enligt följande.

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

Spara(Save) och kör det här skriptet precis som du gjorde ovan. Du kommer att se att alla resultat är ifyllda i kolumn 2 i ditt kalkylark.

Du kommer att märka att referens till en cell och rad i en arrayvariabel är annorlunda än med en getRange-funktion. 

data[i][0] hänvisar till arraydimensionerna där den första dimensionen är raden och den andra är kolumnen. Båda dessa börjar på noll.

getRange(i+1, 2) hänvisar till den andra raden när i=1 (eftersom rad 1 är rubriken), och 2 är den andra kolumnen där resultaten lagras.

Använd appendRow för att skriva resultat(Use appendRow To Write Results)

Vad händer om du har ett kalkylblad där du vill skriva data i en ny rad istället för en ny kolumn?

Detta är lätt att göra med appendRow- funktionen. Denna funktion kommer inte att störa några befintliga data i arket. Det kommer bara att lägga till en ny rad i det befintliga arket.

Som ett exempel, skapa en funktion som kommer att räkna från 1 till 10 och visa en räknare med multiplar av 2 i en Räknarkolumn(Counter) .

Denna funktion skulle se ut så här:

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

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

Här är resultaten när du kör den här funktionen.

Bearbeta RSS-flöden med URLFetchApp(Process RSS Feeds With URLFetchApp)

Du kan kombinera den tidigare Google Sheets -skriptfunktionen och URLFetchApp för att hämta RSS - flödet från vilken webbplats som helst och skriva en rad till ett kalkylblad för varje artikel som nyligen publicerats på den webbplatsen.

Detta är i grunden en gör-(DIY) det-själv- metod för att skapa ditt eget kalkylblad för RSS -flödesläsare!

Skriptet för att göra detta är inte heller alltför komplicerat.

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, drar Xml.parse varje objekt ur RSS -flödet och separerar varje rad i titel, länk, datum och beskrivning. 

Genom att använda appendRow- funktionen kan du placera dessa objekt i lämpliga kolumner för varje enskilt objekt i RSS- flödet.

Utdata i ditt ark kommer att se ut ungefär så här:

Istället för att bädda in RSS -flödesadressen i skriptet kan du ha ett fält i ditt ark med URL :(URL) en och sedan ha flera ark – ett för varje webbplats du vill övervaka.

Sammanfoga strängar(Concatenate Strings) och lägg till(Add) en vagnretur(Carriage Return)

Du kan ta RSS -kalkylarket ett steg längre genom att lägga till några textmanipuleringsfunktioner och sedan använda e-postfunktioner för att skicka dig själv ett e-postmeddelande med en sammanfattning av alla nya inlägg i webbplatsens RSS - flöde.

För att göra detta, under skriptet du skapade i föregående avsnitt, vill du lägga till lite skript som extraherar all information i kalkylarket. 

Du vill bygga ämnesraden och e-posttexten genom att tolka all information från samma "objekt"-array som du använde för att skriva RSS- data till kalkylarket. 

För att göra detta, initiera ämnet och meddelandet genom att placera följande rader före "objekt" For-loopen.

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

Lägg sedan till följande rad i slutet av "objekten" för loop (direkt efter appendRow-funktionen).

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

"+"-symbolen kommer att sammanfoga alla fyra poster följt av " " för en vagnretur efter varje rad. I slutet av varje rubrikdatablock vill du ha två vagnreturer för en snyggt formaterad e-posttext.

När alla rader har bearbetats, innehåller variabeln "body" hela e-postmeddelandesträngen. Nu är du redo att skicka e-postmeddelandet!

Hur man skickar e-post i Google Apps Script(How To Send Email In Google Apps Script)

Nästa avsnitt i ditt Google Script kommer att vara att skicka "ämnet" och "brödtexten" via e-post. Att göra detta i Google Script är väldigt enkelt.

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

MailApp är en mycket bekväm klass i Google Apps -skript som ger dig tillgång till ditt Google- (Google Apps)kontos(MailApp) e-posttjänst för att skicka eller ta emot e-post. Tack vare detta låter den enda raden med sendEmail-funktionen dig skicka vilken e-post(send any email) som helst med bara e-postadress, ämnesrad och brödtext.

Så här kommer e-postmeddelandet att se ut. 

Genom att kombinera möjligheten att extrahera en webbplatss RSS - flöde, lagra den i ett Google-ark(Google Sheet) och skicka den till dig själv med URL- länkar inkluderade, gör det mycket bekvämt att följa det senaste innehållet för vilken webbplats som helst.

Det här är bara ett exempel på kraften som finns i Google Apps - skript för att automatisera åtgärder och integrera flera molntjänster.



About the author

"Jag är en frilansande Windows- och Office-expert. Jag har över 10 års erfarenhet av att arbeta med dessa verktyg och kan hjälpa dig att få ut det mesta av dem. Mina färdigheter inkluderar: arbeta med Microsoft Word, Excel, PowerPoint och Outlook; skapa webben sidor och applikationer; och hjälpa kunder att nå sina affärsmål."



Related posts