/
Sheets.hs
54 lines (46 loc) · 2.14 KB
/
Sheets.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 )