PHP i Google Sheets

Ako pravimo PHP aplikaciju koji treba da čita (a i piše) iz neke Gugl tabele, evo postupka:

1. Google API Client

Treba nam Composer kako bismo instalirali Google API Client. Google API Client će nam olakšati rad sa autorizacijom i pristupom Gugl resursima. Za instalaciju je potrebno, u direktorijumu u kojem se nalazi naš projekat, kreirati sledeći composer.json fajl:

    "require": {
        "google/apiclient": "^2.0"

i pokrenuti composer update. Nakon ovoga će nam se pojaviti vendor direktorijum sa svim potrebnim klasama plus autoload skriptom.

2. API Manager

Idemo na da kreiramo projekat. Nakon toga klik na Enable API i sa liste biramo Sheets API.

3. Credentials

Sledeći korak su kredencijali. Idemo na Credentials > Create credentials > Service account key. Biramo New service account, dajemo mu ime a kao ulogu (role) Project > Service Account Actor. Key type nam je JSON fajl koji ćemo da skinemo i spremimo negde na sigurno.

4. Permissions

Na kraju je potrebno da dodelimo dozvole za rad sa dokumentom korisniku čiji mejl se nalazi u JSON fajlu. Dozvola može da bude samo za čitanje ili i za čitanje i pisanje u zavisnosti od toga šta želimo da naša PHP aplikacija radi.

5. PHP

Primer u PHP-u za čitanje podataka iz dokumenta sa datim ajdijem, radnim listom 2017 i iz ranga ćelija A1:AH13:


require __DIR__ . '/vendor/autoload.php';

$jsonFile = "auth.json";
$spreadsheetId = 'nbg9GnVy6bckblablatruć';
$range = '2017!A1:AH';

$client = new \Google_Client();

$fh = fopen($jsonFile, "r");
$client->setAuthConfig(json_decode(file_get_contents($jsonFile), true));

$sheets = new \Google_Service_Sheets($client);
$data = $sheets->spreadsheets_values->get($spreadsheetId, $range, ['majorDimension' => 'ROWS']);





Naknade i troškovi

Primeri iz života…

Qiwi Wallet @ Pinnacle Sports

Minimum deposit: 10e
Maximum deposit: 250e
Fee: 2%

Minimum withdrawal: 10e
Maximum withdrawal: 180e
Fee: 12e

Each Pinnacle Sports customer receives one free withdrawal per calendar month.

Charges for Oxigen Wallet

Signing up for Oxigen Wallet: free
Online payment using Oxigen wallet: free
Transfer from wallet to bank account: 3% or fixed ammount, whichever is higher

Mobile Wallet

Setup: free
Monthly: free
Add money: $3-4
Pay bills: $2-5
Get money: $2
Inactivity fee: $1.95-4.95

MyPaylinQ (discontinued)

Credit Card Deposit: 6.5% – 7.5%
Money Order (withdrawal): $5

Google & Paypal checkout fees

$0.00 USD – $3,000.00 USD: 2.9% + $0.30 USD
$3,000.01 USD – $10,000.00 USD: 2.5% + $0.30 USD
$10,000.01 USD – $100,000.00 USD: 2.2% + $0.30 USD
> $100,000.00 USD: 1.9%* + $0.30 USD

Limundo provizije

do 20.000 dinara: 4%
preko 20.000 dinara: 800 dinara + 1% na sumu preko 20.000 dinara

Limundo nudi besplatno postavljanje određenog broja aukcija u toku meseca, inače se naplaćuje pokretanje aukcije.


naknada koju uzima G2A nakon uspešne prodaje: 8%
troškovi transakcije: 35ec


Android pretplata

Kao epilog ulaska u pretplatu, 2. marta je trebalo da se ona i obnovi. Google je pokušao naplatu, ja na kartici nisam imao dovoljno sredstava, naplata logično nije uspela ali sam istovremeno i izašao iz pretplate.

android naplata google play otkazana pretplataIzgleda da se pretplata otkazuje ako nemate sredstava, nema ponovonog pokušaja naplate (retry brick) što je na Android Developers stranici ovako objašnjeno:

If a recurring payment fails (for example, because the customer’s credit card has become invalid), the subscription does not renew.

android naplata google wallet neuspešna naplata


Web Analytics

Analysis of Internet data for understanding and optimizing web usage.

Websites tools:

  • Google analytics
  • Yahoo web analytics
  • Adobe Omniture site catalyst
  • Click Tale
  • Alexa and Quantcast

Social tracking tools:

  • Hootsuite
  • Buffer
  • Social Mention
  • TweetReach
  • AddictioMatic
  • IceRocket
  • AddThis and ShareThis

Google analytics is free and everybody’s using it 🙂 You can see keywords that bring traffic, you can track actions and generate reports.

Who is my target market?demographic data; geo-targeting
How can I grow sales?setting up and managing conversions
What are my competitors doing differently?Google trends; competitor analysis
Am I making the best use of my resources?in-page analytics; acquisition reports
What are my best networks to communicate with?referring sites; social data; most valuable links

A/B testing

  • only test one variable at the time
  • tests must be run simultaneously
  • gather enough relevant data
  • know what you want to test (location of your call to action, text, button color…)
  • try to automate


  • realtime understanding of your website performance
  • understanding of the costs and benefits of your marketing efforts
  • the ability to optimise campaigns before they begin or while they are ongoing
  • reaching full potential
  • allows you to shape your overall digital strategy to ensure maximum impact
  • best digital marketers use data to make informed and educated decisions

Shaw Academy


SEO or acquiring leads long term

Higher ranked means more visitors. How to appear on Google search pages (SERPs) without paying for it. There are paid and organic, unpaid search results. Organic have 2/3 clicks on search results: PPC vs organic – organic wins.

SEOmoz ranking:

  1. trust/authority
  2. link popularity
  3. anchor text of external links
  4. page keyword usage
  5. registration and hosting data
  6. traffic and CTR data

Your site needs to be authority hub. Be the endpoint, many links to you, not much links from your site (be selfish). External links are leakage.

SEO planning

  • business requirements (business and marketing plan)
  • competitor analysis (HTML tags)
  • keyword analysis
  • optimise online customer funnels
  • focus on key website touch points

How to use Google Webmaster tools

  • add site
  • submit sitemap (
  • demote sitelinks (spam sites, inappropriate)
  • watch for improvements (crawl errors)

Onsite optimisations

  • optimise keywords (AdWords keyword search)
  • description tags (not affecting but shows in results page)
  • different tags for every page
  • title tags
  • header tags (most important keywords)
  • use CSS wisely
  • content is very important
  • keyword naming structure for pages, images and folders
  • avoid dynamic URLs
  • bold words count (weight)
  • keyword densities
  • internal linking
  • don’t use much bullets 🙂
  • don’t use imagemaps
  • don’t use Flash and frames
  • use more text, less images
  • use image alt tags
  • have a business address
  • W3C check/complaint

SEO and design

  • build for UX and optimise
  • know your consumer
  • consumers should determine the content
  • follow trends (white background, black text)
  • understand what’s desirable and why
  • know how these signals and adding content affects your site’s SEO profile

Have a reason and strategy for everything you do. Be visible, be useful. SEO is about building trust and authority online which generates more traffic and repeats circle. Content is king, have useful content. You want people to link to you. To be a useful site:

  • have a clear position and offering
  • try to be unique, add value, authority
  • search likes unique high profiled content
  • it’s time consuming and expensive
  • rewards are worth it

Keywords and keyword research

  • use the AdWords keywords planner tool
  • pick high volume keywords
  • look at Google trends
  • research Google suggestions
  • pick high value keywords
  • check the competition
  • put them in all your key tags
  • have 2-3 ranked phrases per page
  • repeat phrases in text content
  • don’t overdo it
  • pick 10-15 words in content

Offsite SEO

  • identify high profiled sites to be linked from
  • create link building strategy
  • blogs
  • online PR
  • onsite linkable features: tools, infographics, guides, walkthroughs…

Helpful tips

  • choose a keyword rich domain
  • don’t take shortcuts or expect magic
  • align keywords, landing pages
  • use Google places
  • use Webmaster tools
  • analyze with analytics
  • use domain in all internal links and posts
  • submit blogs to directories
  • provide quality content
  • mobilize social assets

Shaw Academy


Pay per click

PPC advertising means advertisers pay a website owner whenever their ad is clicked on.

Original sales funnelTranslated to PPC
InterestPPC ad click

Google AdWords is biggest PPC advertising provider. Chose keywords, analyze keywords meta tag of competitions website. Google Keyword planner can be used to benefit Google Adwords advertising and SEO. Keyword match types: broad (widest), phrase, exact and negative (exclude). Facebook PPC have better targeting.


CPCcost per clickpay for a single click on your ad
CPMcost per mileyou pay for 1000 impressions of your ad
CPAcost per acquisitionpay for conversion
CPLcost per leadpay for a lead
CTRclickthrough ratenumber of clicks divided by number of impressions
ROIreturn of investment

How online marketer increments spending: cost per ad impression, cost per click, cost per lead, cost per acquisition.

Risks of PPC advertising

  • need to be careful in this space
  • this costs money and does have a large element of risk to it
  • easy to setup account with AdWords
  • very hard to advertise successfully through it from a commercial perspective


  • one of the most direct forms of incurring a cost in digital advertising
  • getting pushed out by competitors
  • losing market share to new competitors
  • bidding wars
  • junk traffic, concerns
  • runaway costs
  • time management

Tips for success

  • experiment
  • structure is key
  • use keyword planner and keyword matching
  • research competitors
  • what is an acceptable ROI?
  • always use the resources available

Tips for writing great ads

  • check grammar
  • highlight what’s unique
  • look at your ad with a critical eye
  • include prices/promotions
  • include keywords
  • experiment

Optimising AdWords ads: check trends, compare different ad texts and keyword groupings, refine bids and budget. Re-marketing means bring back visitors to your site (visitors see your ads on other websites in the Google display network). Ad rank = cost per conversion x quality score. Qualitiy score is determined by having relevant landing pages, keywords and ads.

Shaw Academy


Android naplata

Google je za potrebe svog Play stora razvio tzv. in-app billing pomoću kojeg je moguće prodavati digitalne sadržaje (slike i muziku), virtuelne sadržaje (kredite, oružja i slično) i premijum servise. Generalno gledano, “dobra” koja kupujemo iz samih aplikacija delimo na trajna i potrošna. Trajna dobra mogu biti puna verzija aplikacije, zahtev za uklanjanje reklama ili nivo u igri koji, jednom kada ga kupite, možete beskonačno prelaziti. Sa druge strane, potrošna dobra su npr. virtuelni novac, dodatni životi i bilo koji drugi kredit koji može biti iskorišćen u aplikaciji. Sve što se kupi iz aplikacije se vodi na vašem nalogu na Play storu s tim što, kada aplikacija jednom iskoristi potrošno dobro, Play stor ga označava sa unowned. Činjenica da su sva kupljena dobra vezana za vaš nalog vam omogućava da trajna dobra nastavite da koristite čak i ako resetujete vaš Android uređaj na fabrička podešavanja ili kupite novi uređaj. Sa druge strane, iskorišćeno potrošno dobro je vezano za aplikaciju i od aplikacije zavisi šta će se desiti ako resetujete uređaj: možda će negde na nekom serveru ostati zabeleženo da imate neke neiskorišćene kredite a ako se informacije beleže samo lokalno onda će oni najverovatnije nepovratno nestati.

Kada su u pitanju tipovi prodaje, razlikujemo:

  1. one-time billing (jednokratna prodaja)
  2. recurring automated billing (pretplata) sa opcionim probnim periodom

Bez obzira na tip prodaje i bilo da su u pitanju jednokratna prodaja ili pretplata, sama naplata se vrši Google Play checkout backend servisom, istim servisom koji služi i za kupovinu aplikacija na Play storu, čime je korisnicima prezentovano već poznato okruženje. Da bi developer mogao da vrši prodaju aplikacija i naplatu iz aplikacija, potrebno je da ima Google Wallet merchant nalog. Srbija nije na listi zemalja iz koje je moguće otvoriti ovakav nalog. Možete kao korisnik (kupac) da otvorite nalog ali ne i kao prodavac. Ja sam se kao korisnik iz Srbije uspešno pretplatio na jednu igricu pomoću Visa Internet kartice dodavši je kao jedan od načina plaćanja na svom korisničkom Wallet-u ( Sada čekam svoj renewal koji bi Google trebalo da pokuša početkom marta bez prethodnog upozorenja.

Play Store app subscription
Pretplata na Play storu

Periodi pretplate:

  • nedeljna
  • mesečna
  • tromesečna
  • šestomesečna
  • godišnja
  • sezonska (recimo, sportska sezona od-do)

Renewal može biti automatski (kada Google okine naplatu na isteku perioda) ili manuelni (kada korisnik koji je u pretplati dokupi još jedan period). Ako korisnik prekine pretplatu, Google ne nudi refund i podrazumeva se da korisnik može da iskoristi proizvod do isteka plaćenog perioda iako više nije u pretplati. Ako korisnik deinstalira aplikaciju, pretplata ostaje aktivna te je potrebno da ode na Play store i da pod “moje pretplate” deaktivira istu.

Prema podacima koje sam našao, Google zadržava 30% od svake transakcije, bilo da je u pitanju jednokratna transakcija, bilo da je u pitanju pretplata. Google uvek od krajnje cene proizvoda prvo odbija PDV pa onda sebi uzima 30% odnosno developeru isplaćuje 70%. U zemljama u kojima je Google poreski obveznik (u zemljama u kojima ima svoju firmu, na primer u Evropskoj uniji), Google uplaćuje PDV onome kome treba. Na primeru Srbije, developer bi platio PDV.


Cena proizvoda je evro sa uključenim PDV-om od 20% (korisnik je platio cenu sa PDV-om od 1 evro). Cena bez PDV-a je 0.83, developer dobija 70% što je ~ 0.58. Porez je 0.17 i to će platiti Google u EU ili developer van EU. Ja sam platio pretplatu 5 dolara, Glu bi trebalo da plati 83 centa PDV-a Srbiji 🙂 mada se porez ne vidi na računu…

Google Wallet istorijat plaćanja

Više o ovome na:

Trošak otvaranja merchant account-a za developera je 25 dolara jednokratno, fee od 30% ide na ime naknade partneru u distribuciji (Google-u) i za operativne troškove. Nisam našao nikakve druge troškove, ni vidljive ni skrivene. Isplata je par dana od završetka meseca a izgleda da nema minimuma za isplatu.

Play store jeste najpoznatija Android prodavnica ali nije jedina. SlideMe je najveća nezavisna online Android prodavnica i oni uzimaju manju naknadu od Google-a (na primer 10% + 10 centi za naplate putem debitnih kartica) ali imaju 50$ minimum za isplatu i neki remittance fee koji nisam shvatio. SlideMe radi na razvoju pretplate.

Google Play Console


SEO tips

  1. title tag je bitan zato što će se pojaviti kao naziv vaše stranice prilikom pretrage. Važno je uložiti napor i svakoj stranici koju kreirate dodeliti jedinstven naslov (title) dužine do 70 znakova.
  2. description tag je takođe bitan, to će u rezultatu pretrage pisati odmah ispod naslova. Opet je bitno za svaku stranicu napisati konkretan opis koji se odnosi baš na sadržaj te stranice.
  3. keywords tag nije više presudan ali neće da škodi ako ga ispravno popunite.
  4. header (h) tagovi treba da prate strukturu stranice. Koristiti alt tagove kod slika. Linkovi na sajtu ne treba da budu generički tipa “klikni ovde”.
  5. Struktura URL-ova mora biti jednostavna tipa što podrazumeva kreiranje jednostavne strukture direktorijuma i dokumenata unutar njih.
  6. Ako posetilac odluči da obriše “tema” iz gornjeg URL-a, trebalo bi da mu se otvori stranica sa kategorijama a ne, recimo, poruka “ovaj dokument ne postoji”.
  7. Prikazati posetiocu breadcrumb kako bi u svakom trenutku znao gde se na sajtu nalazi.
  8. Kod navigacije pre treba koristiti tekstualne linkove umesto slika, javascript-a, padajućih menija, flash-a itd.
  9. Stranica 404 (dokument nije nađen) treba da ima upotrebnu vrednost, na primer, da na sebi ima polje za pretragu, neku sugestiju ili mapu sajta
  10. Za svaki dokument/stranicu koji imate na sajtu potrebno je da postoji jedinstvena URL adresa, u protivnom saobraćaj će se deliti između njih i biće na neki način konkurentne jedna drugoj. Izvršiti i canonical URL check
  11. Vreme učitavanja stranica treba smanjiti na minimum.
  12. Postoji više mapa sajtova koje možete da obezbedite za vaš sajt. Najbitniji su sitemap.xml koji će koristiti botovi prilikom prolaska kroz vaš sajt i mapa sajta koju će koristiti vaši posetioci. Ako želite, možete napraviti i mapu slika kao i mapu stranica optimizovanih za mobilne telefone.
  13. Pomoću datoteke robots.txt možete sprečiti botove da indeksiraju određene delove sajta a pomoću “rel=nofollow” možete sprečiti bota da prati neki od linkova.
  14. Trend pokazuje da sve više ljudi koristi mobilne uređaje kako bi pristupalo sajtovima pa stoga treba razvijati sajtove koji se podjednako dobro vide i na punom HD monitoru i na mobilnom telefonu (responsive dizajn, na primer).

Majstor Kvariš


SEO 2013 & beyond

Knjiga SEO 2013 and beyond na jednostavan i praktičan način opisuje kako je Google nekada rangirao rezultate pretraživanja a kako to radi od 2012. godine, odnosno, od Penguin apdejta. Da sumiram to u par rečenica…

Pre Pingvina, za visok rejting među rezultatima pretrage je bilo potrebno:

  1. pronaći visoko tražene ključne reči za koje je konkurencija slaba
  2. optimizovati stranicu za te ključne reči
  3. generisati masu povratnih linkova koji u naslovu imaju ove ključne reči
  4. uživati u kratkotrajnom skoku popularnosti

Od sredine 2012. godine Google uvodi optimizaciju svog pretraživača a sve u cilju da smanji spam i nekvalitetne tekstove tako da nam je sada potrebno sledeće:

  1. Kvalitetan sadržaj za posetioce a ne sadržaj optimizovan za pretraživače. To podrazumeva da u tekstu “gustina” ključnih reči treba da bude prirodna a ne napumpana (tačka 2 iz vremena pre Pingvina). Dalje, tekst treba da izgleda kao da ga je napisao stručnjak odnosno neko ko zna o čemu priča, stručnjak prirodno u pisanju koristi termine koji se odnose na datu temu (niche vocabulary) što doprinosi relevantnosti teksta i njegovom boljem rangiranju i, jako važno, tekst treba da doda neku vrednost u odnosu na već postojeće tekstove (prvih 10 iz rezultata pretraživanja tzv. serps) na istu temu.
  2. Organizacija sajta u smislu da naziv domena ne utiče više na pozicioniranje (kupivijagru dot com više neće biti prvi na listi rezultata), da sadržaj treba grupisati po tematici ili kategorijama (tzv. silosi) kojima će se pristupati preko menija kako bi se korisnicima olakšala navigacija. Treba koristiti interno povezivanje/linkovanje sadržaja/stranica u okviru teksta kako bi korisnici na klik mogli da saznaju nešto više. Isto tako treba koristiti povezane sadržaje i, na kraju, treba koristiti tagove.
  3. Autoritet – sadržaji moraju da imaju status informacija ili saveta stručnjaka, povratni linkovi treba da dolaze sa kvalitetnih sajtova iz branše, odlazni linkovi takođe treba da vode na kvalitetne sajtove, poželjno je povezati se u društvenu mrežu (FaceBook, Twitter, YouTube…), pisati na tuđim relevantnim blogovima itd.
  4. Šta korisnik treba da dobije? Dobar dizajn, brzinu sajta, zaraznost sadržajem, interaktivnost (pitanja i komentari) i poverenje u informacije sa sajta.

Majstor Kvariš