Skip to content

Commit

Permalink
added 3 examples for google sheets API
Browse files Browse the repository at this point in the history
these 3 minimalistic examples should demonstrate
how to use google sheets APIs. There are also
some explanations for each of the examples.
  • Loading branch information
miladz68 authored and brendanhay committed Aug 16, 2017
1 parent c71b9a7 commit e367ff1
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
3 changes: 3 additions & 0 deletions examples/gogol-examples.cabal
Expand Up @@ -19,6 +19,7 @@ library

exposed-modules:
Example.Storage
, Example.Sheets

build-depends:
base >= 4.7
Expand All @@ -28,6 +29,8 @@ library
, gogol == 0.3.0.*
, gogol-core
, gogol-storage
, gogol-sheets
, lens
, resourcet
, text
, aeson
54 changes: 54 additions & 0 deletions examples/src/Example/Sheets.hs
@@ -0,0 +1,54 @@
{-# LANGUAGE OverloadedStrings #-}

module Example.Sheets where

---------------------------------------------------------------------------------
import Network.Google.Resource.Sheets.Spreadsheets.Get
import Network.Google.Sheets
import Network.Google

import Control.Lens ((.~), (<&>))
import Data.Text (Text)
import System.IO (stdout)
import Data.Aeson.Types

---------------------------------------------------------------------------------

-- |
-- This gets the Information about an spreadsheet.
-- In order to be able to run these examples you need to
-- create a service acount from google's developers console
-- and copy the dowloaded json file to ~/.config/gcloud/application_default_credentials.json.
--
-- you must also share with your service the spreadsheet that you want to get the info of.
-- In order to do this you must share the sheet with the email address of your service
-- which is in your downloaded service config file.
--
-- after doing above step just pass the sreadsheet id to the function.
exampleGetSheet :: Text -> IO Spreadsheet
exampleGetSheet sheetID = do
lgr <- newLogger Debug stdout
env <- newEnv <&> (envLogger .~ lgr) . (envScopes .~ spreadsheetsScope)
runResourceT . runGoogle env $
send (spreadsheetsGet sheetID )

-- |
-- you pass the sheet id and a range (eg. "sheet1!A1:C3") in that sheet
-- and it retreives the values in the specified range
exampleGetValue :: Text -> Text -> IO ValueRange
exampleGetValue sheetID range = do
lgr <- newLogger Debug stdout
env <- newEnv <&> (envLogger .~ lgr) . (envScopes .~ spreadsheetsScope)
runResourceT . runGoogle env $
send (spreadsheetsValuesGet sheetID range )


exampleAppendValue :: Text -> Text -> [[Value]] -> IO AppendValuesResponse
exampleAppendValue sheetID range val = do
lgr <- newLogger Debug stdout
env <- newEnv <&> (envLogger .~ lgr) . (envScopes .~ spreadsheetsScope)
runResourceT . runGoogle env $
send (svaValueInputOption .~ Just "USER_ENTERED" $ spreadsheetsValuesAppend
sheetID
( vrMajorDimension .~ Just VRMDRows $ vrValues .~ val $ vrRange .~ Just range $ valueRange)
range )

0 comments on commit e367ff1

Please sign in to comment.