5 Google Sheets Script funkció, amelyet tudnia kell

A Google Táblázatok(Google Sheets) egy hatékony felhőalapú táblázatkezelő eszköz, amellyel szinte mindent megtehet, amit a Microsoft Excelben(Microsoft Excel) megtehet . A Google Táblázatok(Google Sheets) igazi ereje azonban a hozzá tartozó Google Scripting funkció.

A Google Apps(Google Apps) szkriptelés egy háttérszkriptkészítő eszköz, amely nemcsak a Google Táblázatokban(in Google Sheets) , hanem a Google Dokumentumokban, a Gmailben, a Google Analyticsben(Google Analytics) és szinte minden más Google felhőszolgáltatásban is működik. Lehetővé teszi az egyes alkalmazások automatizálását, és az egyes alkalmazások egymással való integrálását.

Ebből a cikkből megtudhatja, hogyan kezdje el a Google Apps szkripteket, hogyan hozzon létre egy alapvető szkriptet a Google Táblázatokban(Google Sheets) a cellaadatok olvasásához és írásához, valamint a leghatékonyabb speciális Google Táblázatok(Google Sheets) szkriptfunkciókat.

Google Apps Script létrehozása(How to Create a Google Apps Script)

Már most elkezdheti létrehozni első Google Apps -szkriptjét a Google Táblázatok szolgáltatásból(Google Sheets)

Ehhez válassza a menü Eszközök(Tools) menüpontját, majd a Script Editor menüpontot(Script Editor) .

Ezzel megnyílik a szkriptszerkesztő ablak, és alapértelmezés szerint a myfunction() nevű függvény lesz . Itt hozhatja létre és tesztelheti a Google Scriptet(Google Script) .

A próbálkozáshoz próbáljon meg létrehozni egy Google Táblázatok(Google Sheets) szkriptfüggvényt, amely beolvassa az adatokat az egyik cellából, számítást végez rajta, és egy másik cellába adja ki az adatmennyiséget.

A cellából származó adatok lekérésére szolgáló függvény a getRange() és getValue() függvény. A cellát soronként és oszloponként azonosíthatja. Tehát ha van értéke a 2. sorban és az 1. oszlopban (az A oszlopban), a szkript első része így fog kinézni:

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

Ez az adott cellából származó értéket tárolja az adatváltozóban(data) . Számítást végezhet az adatokon, majd kiírhatja az adatokat egy másik cellába. Tehát ennek a függvénynek az utolsó része a következő lesz:

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

Ha végzett a függvény írásával, válassza ki a lemez ikont a mentéshez. 

Amikor először futtat egy új Google Táblázatok szkriptfunkciót, mint ez (a Futtatás ikon kiválasztásával), (Google Sheets)engedélyt(Authorization) kell adnia a szkript futtatásához a Google Fiókjában(Google Account) .

Engedélyezze az engedélyeket a folytatáshoz. Miután a szkript lefut, látni fogja, hogy a szkript a számítási eredményeket a célcellába írta.

Most, hogy tudja, hogyan kell írni egy alapvető Google Apps -szkriptfüggvényt, vessünk egy pillantást néhány fejlettebb funkcióra.

Használja a getValues-t a tömbök betöltéséhez(Use getValues To Load Arrays)

A tömbök használatával új szintre emelheti azt a koncepciót, hogy számításokat végezzen a táblázatban lévő adatokon a parancsfájlokkal. Ha a getValues ​​használatával tölt be egy változót a Google Apps - szkriptbe, a változó egy tömb lesz, amely több értéket is betölthet a munkalapról.

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

Az adatváltozó egy többdimenziós tömb, amely a lap összes adatát tartalmazza. Az adatok kiszámításához for ciklust kell használni. A for ciklus számlálója minden soron keresztül fog működni, és az oszlop állandó marad, attól függően, hogy melyik oszlopba szeretné begyűjteni az adatokat.

Példatáblázatunkban az alábbiak szerint végezhet számításokat a három adatsoron.

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

Mentse(Save) el és futtassa ezt a szkriptet a fenti módon. Látni fogja, hogy az összes eredmény a táblázat 2. oszlopába kerül.

Észreveheti, hogy egy tömbváltozóban egy cellára és egy sorra való hivatkozás más, mint a getRange függvény esetében. 

az adat[i][0](data[i][0]) a tömbméretekre utal, ahol az első dimenzió a sor, a második pedig az oszlop. Mindkettő nulláról indul.

getRange(i+1, 2) a második sorra utal, amikor i=1 (mivel az 1. sor a fejléc), a 2 pedig a második oszlop, ahol az eredményeket tárolják.

Eredmények írásához használja az appendRow parancsot(Use appendRow To Write Results)

Mi a teendő, ha van egy táblázata, ahol új oszlopok helyett új sorba szeretne adatokat írni?

Ez könnyen megtehető az appendRow funkcióval. Ez a funkció nem zavarja a munkalapon található adatokat. Csak hozzáfűz egy új sort a meglévő munkalaphoz.

Példaként készítsen egy függvényt, amely 1-től 10-ig számol, és a Számláló(Counter) oszlopban egy számlálót mutat 2 többszörösével.

Ez a függvény így nézne ki:

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

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

Itt vannak az eredmények a funkció futtatásakor.

RSS-hírcsatornák feldolgozása az URLFetchApp segítségével(Process RSS Feeds With URLFetchApp)

Kombinálhatja a korábbi Google Táblázatok(Google Sheets) szkriptfunkciót és az URLFetchApp alkalmazást, hogy lekérje az RSS -hírcsatornát bármely webhelyről, és írjon egy sort a táblázatba az adott webhelyen nemrég közzétett minden cikkhez.

Ez alapvetően egy barkácsolási(DIY) módszer, amellyel saját RSS - hírcsatorna-olvasó táblázatot hozhat létre!

Az ehhez szükséges forgatókönyv sem túl bonyolult.

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

Amint láthatja, az Xml.parse minden elemet kihúz az RSS -hírcsatornából, és minden sort szétválaszt a címben, hivatkozásban, dátumban és leírásban. 

Az appendRow függvény segítségével ezeket az elemeket az RSS feed minden egyes eleméhez megfelelő oszlopokba helyezheti.

A munkalap kimenete így fog kinézni:

Ahelyett, hogy beágyazná az RSS - hírcsatorna URL -címét a szkriptbe, a munkalapon lehet egy mező az URL -lel , majd több munkalap is lehet – minden megfigyelni kívánt webhelyhez egy.

A karakterláncok(Concatenate Strings) összefűzése és kocsivisszaadás (Carriage Return)hozzáadása(Add)

Egy lépéssel tovább viheti az RSS -táblázatot néhány szövegszerkesztő funkció hozzáadásával, majd az e-mail funkciók segítségével e-mailt küldhet magának a webhely RSS - hírcsatornájában található összes új bejegyzés összefoglalójával.

Ehhez az előző szakaszban létrehozott szkripthez hozzá kell adni néhány olyan szkriptet, amely a táblázatban található összes információt kivonja. 

A tárgysort és az e-mail szövegtörzsét úgy kell összeállítani, hogy össze kell elemezni az összes információt ugyanabból az „elemek” tömbből, amelyet az RSS -adatok táblázatba írásához használt. 

Ehhez inicializálja a tárgyat és az üzenetet úgy, hogy a következő sorokat az „elemek” For ciklus elé helyezi.

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

Ezután a ciklus „elemeinek” végére (közvetlenül az appendRow függvény után) adja hozzá a következő sort.

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

A „+” szimbólum összefűzi mind a négy elemet, majd a „ ” jel követi a kocsi visszatérést minden sor után. Minden egyes címadatblokk végén két kocsivisszaküldést kell adnia egy szépen formázott e-mail törzshöz.

Az összes sor feldolgozása után a „body” változó tartalmazza a teljes e-mail üzenetet. Most már készen áll az e-mail elküldésére!

E-mail küldés a Google Apps Scriptben(How To Send Email In Google Apps Script)

A Google Script(Google Script) következő része a „tárgy” és a „törzs” elküldése e-mailben. Ezt a Google Script segítségével nagyon egyszerű megtenni.

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

A MailApp egy nagyon kényelmes osztály a Google Apps szkripteken belül, amely hozzáférést biztosít Google Fiókja e-mail szolgáltatásához e-mailek küldéséhez és fogadásához. Ennek köszönhetően a sendEmail funkcióval ellátott egyetlen sor lehetővé teszi, hogy bármilyen e-mailt küldjön(send any email) , csak az e-mail címmel, tárgysorral és törzsszöveggel.

Így fog kinézni a kapott e-mail. 

Egy webhely RSS -hírcsatornájának kivonatolása, (RSS)Google-táblázatban(Google Sheet) való tárolása és az URL -hivatkozásokkal együtt történő elküldése önmagának, nagyon kényelmessé teszi bármely webhely legfrissebb tartalmának követését.

Ez csak egy példa a Google Apps - szkriptekben rendelkezésre álló képességekre a műveletek automatizálására és több felhőszolgáltatás integrálására.



About the author

Számítógépes technikus vagyok, aki évek óta dolgozom Androiddal és irodai szoftverekkel. Az elmúlt 5 évben arra is tanítottam az embereket, hogyan használják a Mac-eket. Ha valakit keres, aki tudja, hogyan kell megjavítani a dolgokat a számítógépén, valószínűleg tudok segíteni!



Related posts