5 Google Spreadsheets-scriptfuncties die u moet kennen

Google Spreadsheets(Google Sheets) is een krachtige cloudgebaseerde spreadsheettool waarmee u bijna alles kunt doen wat u in Microsoft Excel zou kunnen doen . Maar de echte kracht van Google Spreadsheets(Google Sheets) is de Google Scripting -functie die daarbij hoort.

Google Apps -scripting is een scripttool op de achtergrond die niet alleen werkt in Google Spreadsheets(in Google Sheets) , maar ook in Google Documenten, Gmail, Google Analytics en bijna elke andere Google -cloudservice. Hiermee kunt u die afzonderlijke apps automatiseren en elk van die apps met elkaar integreren.

In dit artikel leert u hoe u aan de slag kunt gaan met Google Apps - scripts, hoe u een basisscript maakt in Google Spreadsheets(Google Sheets) om celgegevens te lezen en te schrijven, en hoe u de meest effectieve geavanceerde Google Spreadsheets(Google Sheets) -scriptfuncties kunt gebruiken .

Een Google Apps-script maken(How to Create a Google Apps Script)

U kunt nu beginnen met het maken van uw eerste Google Apps -script vanuit Google Spreadsheets(Google Sheets)

Om dit te doen, selecteert u Tools in het menu en vervolgens Script Editor .

Dit opent het scripteditorvenster en standaard ingesteld op een functie met de naam myfunction() . Hier kunt u uw Google Script maken en testen .

Om het een kans te geven, probeert u een Google Spreadsheets(Google Sheets) -scriptfunctie te maken die gegevens uit de ene cel leest, er een berekening op uitvoert en de hoeveelheid gegevens naar een andere cel uitvoert.

De functie om gegevens uit een cel te halen, zijn de functies getRange()(getRange()) en getValue() . U kunt de cel per rij en kolom identificeren. Dus als je een waarde hebt in rij 2 en kolom 1 (de A-kolom), ziet het eerste deel van je script er als volgt uit:

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

Hiermee wordt de waarde van die cel in de gegevensvariabele opgeslagen(data) . U kunt een berekening op de gegevens uitvoeren en die gegevens vervolgens naar een andere cel schrijven. Dus het laatste deel van deze functie zal zijn:

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

Wanneer u klaar bent met het schrijven van uw functie, selecteert u het schijfpictogram om op te slaan. 

De eerste keer dat u een nieuwe scriptfunctie voor Google Spreadsheets(Google Sheets) zoals deze uitvoert (door het pictogram Uitvoeren te selecteren), moet u autorisatie(Authorization) verlenen om het script op uw Google-account uit te voeren .

Sta machtigingen toe om door te gaan. Zodra uw script is uitgevoerd, ziet u dat het script de berekeningsresultaten naar de doelcel heeft geschreven.

Nu u weet hoe u een eenvoudige Google Apps -scriptfunctie moet schrijven, gaan we eens kijken naar enkele meer geavanceerde functies.

GetValues ​​gebruiken om arrays te laden(Use getValues To Load Arrays)

U kunt het concept van het doen van berekeningen op gegevens in uw spreadsheet met scripting naar een nieuw niveau tillen door arrays te gebruiken. Als u een variabele in het Google Apps -script laadt met getValues, is de variabele een array die meerdere waarden van het blad kan laden.

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

De gegevensvariabele is een multidimensionale array die alle gegevens van het blad bevat. Om een ​​berekening op de data uit te voeren, gebruik je een for -lus. De teller van de for-lus werkt door elke rij en de kolom blijft constant, gebaseerd op de kolom waar u de gegevens wilt ophalen.

In ons voorbeeldspreadsheet kunt u als volgt berekeningen uitvoeren op de drie gegevensrijen.

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

Sla(Save) dit script op en voer het uit zoals je hierboven hebt gedaan. U zult zien dat alle resultaten in kolom 2 van uw spreadsheet worden ingevuld.

U zult merken dat het verwijzen naar een cel en rij in een arrayvariabele anders is dan bij een getRange-functie. 

data[i][0] verwijst naar de matrixdimensies waarbij de eerste dimensie de rij is en de tweede de kolom. Beide beginnen bij nul.

getRange(i+1, 2) verwijst naar de tweede rij wanneer i=1 (aangezien rij 1 de kop is), en 2 de tweede kolom is waar de resultaten worden opgeslagen.

Gebruik appendRow om resultaten te schrijven(Use appendRow To Write Results)

Wat als u een spreadsheet heeft waarin u gegevens in een nieuwe rij wilt schrijven in plaats van in een nieuwe kolom?

Dit is eenvoudig te doen met de appendRow- functie. Deze functie zal bestaande gegevens in het blad niet storen. Het voegt gewoon een nieuwe rij toe aan het bestaande blad.

Maak bijvoorbeeld een functie die van 1 tot 10 telt en laat een teller zien met veelvouden van 2 in een kolom Teller .(Counter)

Deze functie ziet er als volgt uit:

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

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

Dit zijn de resultaten wanneer u deze functie uitvoert.

Verwerk RSS-feeds met URLFetchApp(Process RSS Feeds With URLFetchApp)

Je zou de vorige Google Spreadsheets(Google Sheets) -scriptfunctie en de URLFetchApp kunnen combineren om de RSS - feed van elke website te halen en een rij naar een spreadsheet te schrijven voor elk artikel dat onlangs op die website is gepubliceerd.

Dit is eigenlijk een doe(DIY) -het-zelf- methode om uw eigen spreadsheet voor RSS -feedlezers te maken!

Het script om dit te doen is ook niet al te ingewikkeld.

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]);
}
}

Zoals je kunt zien, haalt Xml.parse elk item uit de RSS -feed en scheidt elke regel in de titel, link, datum en beschrijving. 

Met de appendRow- functie kunt u deze items in de juiste kolommen plaatsen voor elk afzonderlijk item in de RSS - feed.

De uitvoer in uw blad ziet er ongeveer zo uit:

In plaats van de RSS - feed - URL in het script in te sluiten, zou u een veld in uw blad kunnen hebben met de URL , en dan meerdere bladen hebben - één voor elke website die u wilt controleren.

Strings samenvoegen(Concatenate Strings) en een koetsretour (Carriage Return)toevoegen(Add)

Je zou de RSS -spreadsheet nog een stap verder kunnen brengen door enkele tekstmanipulatiefuncties toe te voegen en vervolgens e-mailfuncties te gebruiken om jezelf een e-mail te sturen met een samenvatting van alle nieuwe berichten in de RSS - feed van de site.

Om dit te doen, wil je onder het script dat je in de vorige sectie hebt gemaakt wat scripts toevoegen die alle informatie in de spreadsheet extraheren. 

U wilt de onderwerpregel en de hoofdtekst van de e-mailtekst samenstellen door alle informatie uit dezelfde array met 'items' te ontleden die u hebt gebruikt om de RSS -gegevens naar de spreadsheet te schrijven. 

Om dit te doen, initialiseert u het onderwerp en het bericht door de volgende regels voor de "items" For-lus te plaatsen.

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

Voeg vervolgens aan het einde van de "items" for-lus (direct na de appendRow-functie) de volgende regel toe.

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

Het "+"-symbool voegt alle vier de items samen, gevolgd door " " voor een regelterugloop na elke regel. Aan het einde van elk titelgegevensblok wilt u twee regelretouren voor een mooi opgemaakte e-mailtekst.

Zodra alle rijen zijn verwerkt, bevat de variabele "body" de volledige tekenreeks van het e-mailbericht. Nu ben je klaar om de e-mail te verzenden!

E-mail verzenden in Google Apps Script(How To Send Email In Google Apps Script)

Het volgende gedeelte van uw Google Script is om het "onderwerp" en de "body" via e-mail te verzenden. Dit doen in Google Script is heel eenvoudig.

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

De MailApp is een zeer handige klasse binnen Google Apps -scripts die u toegang geeft tot de e-mailservice van uw Google-account om e-mails te verzenden of te ontvangen. Dankzij de enkele regel met de functie sendEmail kunt u elke e-mail verzenden(send any email) met alleen het e-mailadres, de onderwerpregel en de hoofdtekst.

Dit is hoe de resulterende e-mail eruit zal zien. 

De combinatie van de mogelijkheid om de RSS - feed van een website te extraheren, op te slaan in een Google-spreadsheet(Google Sheet) en naar jezelf te verzenden met daarin de URL - links, maakt het erg handig om de nieuwste inhoud voor elke website te volgen.

Dit is slechts één voorbeeld van de kracht die beschikbaar is in Google Apps -scripts om acties te automatiseren en meerdere cloudservices te integreren.



About the author

Ik ben een computerprofessional met meer dan 10 jaar ervaring. In mijn vrije tijd help ik graag aan een bureau en leer ik kinderen internetten. Mijn vaardigheden omvatten veel dingen, maar het belangrijkste is dat ik weet hoe ik mensen kan helpen bij het oplossen van problemen. Als je iemand nodig hebt die je kan helpen met iets dringends of gewoon wat basistips wilt, neem dan contact met me op!



Related posts