5 функција скрипте Гоогле Схеетс које треба да знате

Гоогле табеле(Google Sheets) су моћна алатка за табеле заснована на облаку која вам омогућава да урадите скоро све што можете да урадите у Мицрософт Екцел(Microsoft Excel) -у . Али права моћ Гоогле табела(Google Sheets) је функција Гоогле Сцриптинг(Google Scripting) која долази са њима.

Гоогле Аппс(Google Apps) скриптовање је алатка за скриптовање у позадини која функционише не само у Гоогле табелама(in Google Sheets) већ и у Гоогле документима, Гмаил-у, Гоогле аналитици(Google Analytics) и скоро свим другим Гоогле(Google) услугама у облаку. Омогућава вам да аутоматизујете те појединачне апликације и да интегришете сваку од тих апликација једну са другом.

У овом чланку ћете научити како да почнете са писањем скрипти за Гоогле Аппс(Google Apps) , креирате основну скрипту у Гоогле табелама(Google Sheets) за читање и уписивање података у ћелији и најефикасније напредне функције скрипте Гоогле табеле .(Google Sheets)

Како да направите скрипту за Гоогле Аппс(How to Create a Google Apps Script)

Можете одмах да почнете да правите своју прву Гоогле Аппс(Google Apps) скрипту из Гоогле табела(Google Sheets)

Да бисте то урадили, изаберите Тоолс(Tools) из менија, а затим Сцрипт Едитор(Script Editor) .

Ово отвара прозор уређивача скрипте и подразумевано је постављена функција која се зове мифунцтион()(myfunction()) . Овде можете да креирате и тестирате своју Гоогле скрипту(Google Script) .

Да бисте то покушали, покушајте да направите функцију скрипте Гоогле табеле(Google Sheets) која ће читати податке из једне ћелије, извршити прорачун на њој и избацити количину података у другу ћелију.

Функција за добијање података из ћелије су функције гетРанге()(getRange()) и гетВалуе()(getValue() ) . Можете идентификовати ћелију по реду и колони. Дакле, ако имате вредност у реду 2 и колони 1 (колона А), први део ваше скрипте ће изгледати овако:

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

Ово чува вредност из те ћелије у променљивој података . (data)Можете извршити прорачун на подацима, а затим записати те податке у другу ћелију. Дакле, последњи део ове функције ће бити:

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

Када завршите са писањем функције, изаберите икону диска коју желите да сачувате. 

Када први пут покренете нову функцију скрипте Гоогле табеле(Google Sheets) попут ове (одабиром иконе за покретање), мораћете да дате овлашћење(Authorization) да би се скрипта покренула на вашем Гоогле налогу(Google Account) .

Дозволите дозволе за наставак. Када се скрипта покрене, видећете да је скрипта написала резултате прорачуна у циљну ћелију.

Сада када знате како да напишете основну функцију Гоогле Аппс(Google Apps) скрипте, хајде да погледамо неке напредније функције.

Користите гетВалуес за учитавање низова(Use getValues To Load Arrays)

Концепт израчунавања података у табели са скриптовима можете подићи на нови ниво коришћењем низова. Ако учитате променљиву у Гоогле Аппс(Google Apps) скрипту користећи гетВалуес, променљива ће бити низ који може да учита више вредности са листа.

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

Променљива података је вишедимензионални низ који садржи све податке са листа. Да бисте извршили прорачун података, користите петљу фор . (for)Бројач фор петље ће радити кроз сваки ред, а колона остаје константна, на основу колоне у коју желите да извучете податке.

У нашем примеру табеле, можете извршити прорачуне за три реда података на следећи начин.

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

Сачувајте(Save) и покрените ову скрипту као што сте урадили горе. Видећете да су сви резултати попуњени у колону 2 у табели.

Приметићете да је упућивање на ћелију и ред у променљивој низа другачије него код функције гетРанге. 

дата[и][0](data[i][0]) се односи на димензије низа где је прва димензија ред, а друга колона. И једно и друго почиње од нуле.

getRange(i+1, 2) се односи на други ред када је и=1 (пошто је ред 1 заглавље), а 2 је друга колона у којој се чувају резултати.

Користите аппендРов за писање резултата(Use appendRow To Write Results)

Шта ако имате табелу у коју желите да упишете податке у нови ред уместо у нову колону?

Ово је лако урадити са функцијом аппендРов(appendRow) . Ова функција неће сметати постојећим подацима у табели. Само ће додати нови ред постојећем листу.

Као пример, направите функцију која ће бројати од 1 до 10 и приказати бројач са вишеструким бројем 2 у колони Цоунтер .(Counter)

Ова функција би изгледала овако:

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

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

Ево резултата када покренете ову функцију.

Обрадите РСС феедове помоћу УРЛФетцхАпп-а(Process RSS Feeds With URLFetchApp)

Можете комбиновати претходну функцију скрипте Гоогле Схеетс и (Google Sheets)УРЛФетцхАпп(URLFetchApp) да бисте повукли РСС(RSS) феед са било које веб локације и уписали ред у табелу за сваки чланак недавно објављен на тој веб локацији.

Ово је у основи „ уради(DIY) сам“ метода за креирање сопствене табеле за читање РСС(RSS) фидова!

Скрипта за ово такође није превише компликована.

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

Као што видите, Ксмл.парсе(Xml.parse) извлачи сваку ставку из РСС(RSS) фида и одваја сваки ред у наслов, везу, датум и опис. 

Користећи функцију аппендРов(appendRow) , можете ставити ове ставке у одговарајуће колоне за сваку поједину ставку у РСС(RSS) фиду.

Излаз у вашем листу ће изгледати отприлике овако:

Уместо уграђивања УРЛ -а (URL)РСС(RSS) фида у скрипту, могли бисте да имате поље у свом листу са УРЛ(URL) -ом , а затим да имате више листова – по један за сваку веб локацију коју желите да надгледате.

Спојите низове(Concatenate Strings) и додајте(Add) повратну линију(Carriage Return)

РСС(RSS) табелу можете да одведете корак даље додавањем неких функција за манипулацију текстом, а затим користите функције е-поште да себи пошаљете е-пошту са резимеом свих нових постова у РСС(RSS) фиду сајта.

Да бисте то урадили, испод скрипте коју сте креирали у претходном одељку, желећете да додате неке скрипте које ће издвојити све информације у табели. 

Желећете да направите линију предмета и тело текста е-поште тако што ћете рашчланити све информације из истог низа „ставки“ који сте користили за писање РСС(RSS) података у табелу. 

Да бисте то урадили, иницијализујте тему и поруку тако што ћете поставити следеће редове испред петље „итемс“.

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

Затим, на крају „ставки“ за петљу (одмах после функције аппендРов), додајте следећи ред.

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

Симбол “+” ће спојити све четири ставке заједно праћено “ ” за повратак на ознаку након сваког реда. На крају сваког блока података наслова, требаће вам два повратна слова за лепо форматирано тело е-поште.

Када су сви редови обрађени, променљива „тело“ садржи цео низ поруке е-поште. Сада сте спремни да пошаљете е-пошту!

Како послати е-пошту у Гоогле Аппс скрипту(How To Send Email In Google Apps Script)

Следећи одељак ваше Гоогле скрипте(Google Script) биће слање „предмета“ и „тела“ путем е-поште. Урадити ово у Гоогле Сцрипт-(Google Script) у је веома лако.

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

МаилАпп је веома згодна класа унутар Гоогле Аппс(Google Apps) скрипти која вам омогућава приступ услузи е-поште вашег Гоогле налога за слање или примање е-поште . (MailApp)Захваљујући томе, један ред са функцијом сендЕмаил вам омогућава да пошаљете било коју е-пошту(send any email) само са адресом е-поште, линијом предмета и основним текстом.

Овако ће изгледати резултирајући имејл. 

Комбиновањем могућности да издвојите РСС(RSS) фид веб локације , сачувате га у Гоогле табели(Google Sheet) и пошаљете себи са укљученим УРЛ(URL) везама, чини веома згодним праћење најновијег садржаја за било коју веб локацију.

Ово је само један пример моћи која је доступна у Гоогле Аппс(Google Apps) скриптама за аутоматизацију радњи и интегрисање више услуга у облаку.



About the author

Ја сам рачунарски техничар са преко 10 година искуства и искуства у раду са Андроид уређајима. Такође радим у канцеларији последњих пет година, где сам научио да користим Оффице 365 и МацОС. У слободно време уживам да проводим време на отвореном пуштајући музику или гледајући филмове.



Related posts