december 2012 havi bejegyzések

Saját Google Drive (Spreadsheet) függvények

Egyre nagyobb a szerelmem a Google, illetve a tiszteletem a kreativitásuk felé.
A napokban dolgoztam egy Drive táblázaton, amelyben többek között a következő oszlopok szerepeltek:

…|Érték (ez egy szám)|…|Teljesítve(Igen/Nem)|…

Egy cellába szerettem volna összeadni az összes olyan sorban szereplő értéket, ahol a teljesítve oszlopban Igen szerepelt. Valahogy nem fűllött a fogam egy ilyesmi megoldáshoz:

=SUM(IF(C2 == “Igen”,C4,0),IF(D2 == “Igen”, D4,0), …

ezért elkezdtem keresgélni a Google-n, hogy hogyan lehetne ezt az egészet egy ciklussal elintézni.

Az első elképzelésem helytelen volt, de rávezetett a megoldásra: a Google lehetővé teszi hogy JavaScript-ben saját függvényeket írjunk, amely a Drive dokumentumunk adataiból dolgozik.

Lássuk hogyan (én angolul használom a Drive-t, ezért a menük leírása is az angol nevükkel történik): először is válasszuk ki a Tools menüből a Script editor… menüpontot. Itt lehetőségünk nyílik egy projekttemplate választására, én a Spreadsheet-et választottam, mert erre volt szükségem. A Google generál nekünk egy ‘Hello World’ szintű scriptet, ami jó kiinduló alap a sajátunkhoz. Ezt némileg módosítva készítettem el én a sajátomat, mely a következőképpen néz ki:


function calculateFinishedCredits() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var total = 0;
  
  for (var i = 0; i <= numRows - 1; i++) {
    if(values[i][4] == "Igen") total += values[i][2];
  }

  return total;

};

function onEdit() {

   refreshCell();

}

function refreshCell() {

  SpreadsheetApp.getActiveSheet().getRange('G9').setValue(calculateFinishedCredits());

}

Ja ja ja, egyszerű mint a faék, de a célnak most tökéletesen megfelelt és első rácsodálkozásként a Google Univerzum eme újabb lehetőségére tökéletes volt 😛 Azóta már írtam egy másik scriptet is és azt hiszem a kelléktár állandó részévé fog válni 🙂

Ami még hátravan: menjünk vissza a dokumentumunkba, válasszuk ki a Tools/Script manager lehetőséget és koppintsunk egyet a run-ra!