Created
October 3, 2013 20:57
-
-
Save DuqueDeTuring/6817014 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:dependencies [ [google/oauth-client "1.16.0"] | |
[google/http-client "1.16.0"] | |
[google/oauth-client-java6 "1.16.0"] | |
[google/oauth-client-jetty "1.16.0"] | |
[gdata/gdata-base "1.0"] | |
[gdata/gdata-core "1.0"] | |
[gdata/docs "3.0"] | |
[gdata/docs-meta "3.0"] | |
[gdata/gdata-client "1.0"] | |
[gdata/gdata-client-meta "1.0"] | |
[gdata/gdata-spreadsheet "3.0"] | |
[gdata/gdata-spreadsheet-meta "3.0"] | |
[google/jackson-core "2.1.3"] | |
[google/api-client "1.16.0"] | |
[google/http-client-jackson "1.16.0"] | |
[google/http-client-jackson2 "1.16.0"] | |
[gdata/media "1.0"]] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns paqs-googledocs.google | |
(:import (com.google.api.client.auth.oauth2 AuthorizationCodeFlow) | |
(com.google.api.client.auth.oauth2 BearerToken) | |
(com.google.api.client.auth.oauth2 Credential) | |
(com.google.api.client.extensions.java6.auth.oauth2 AuthorizationCodeInstalledApp) | |
(com.google.api.client.extensions.jetty.auth.oauth2 LocalServerReceiver) | |
(com.google.api.client.http GenericUrl) | |
(com.google.api.client.http HttpRequest) | |
(com.google.api.client.http HttpRequestFactory) | |
(com.google.api.client.http HttpRequestInitializer) | |
(com.google.api.client.http HttpTransport) | |
(com.google.api.client.http.javanet NetHttpTransport) | |
(com.google.api.client.json JsonFactory) | |
(com.google.api.client.json JsonObjectParser) | |
(com.google.api.client.json.jackson2 JacksonFactory) | |
(com.google.api.client.util.store DataStoreFactory) | |
(com.google.api.client.util.store FileDataStoreFactory) | |
(com.google.api.client.googleapis.javanet GoogleNetHttpTransport) | |
(com.google.api.client.http GenericUrl) | |
(com.google.gdata.client.spreadsheet FeedURLFactory) | |
(com.google.api.client.googleapis.auth.oauth2 GoogleCredential) | |
(com.google.api.client.googleapis.auth.oauth2 GoogleCredential$Builder) | |
(com.google.gdata.client.spreadsheet SpreadsheetService) | |
(com.google.gdata.data.spreadsheet SpreadsheetFeed) | |
(com.google.gdata.data.spreadsheet WorksheetFeed) | |
(com.google.gdata.data.spreadsheet ListFeed) | |
(com.google.gdata.client.spreadsheet SpreadsheetQuery))) | |
(def factory (FeedURLFactory/getDefault)) | |
(defn credentials [service-account-id private-key-file scope] (.build | |
(doto (.setTransport (new GoogleCredential$Builder) (new NetHttpTransport)) | |
(.setJsonFactory (new JacksonFactory)) | |
(.setServiceAccountId service-account-id) | |
(.setServiceAccountScopes (java.util.Collections/singleton scope)) | |
(.setServiceAccountPrivateKeyFromP12File private-key-file)))) | |
(defn spreadsheet-service [name] | |
(SpreadsheetService. name)) | |
(defn service [service credentials] | |
(.setOAuth2Credentials service credentials) | |
service) | |
(defn get-title [entry] | |
(.getPlainText (.getTitle entry))) | |
(defn get-spreadsheets | |
"devuelve un mapa en donde las llaves son los nombres de cada spreadsheet" | |
[service] | |
(reduce merge | |
(map (fn [spreadsheet] | |
{(get-title spreadsheet) spreadsheet}) | |
(.getEntries (.getFeed service (.getSpreadsheetsFeedUrl factory) SpreadsheetFeed))))) | |
(defn get-spreadsheet [title service] | |
((get-spreadsheets service)) title) | |
(defn get-worksheets [spreadsheet] | |
(.getWorksheets spreadsheet)) | |
(defn get-rows [service worksheet] | |
(let [rows (.getEntries | |
(.getFeed service | |
(.getListFeedUrl worksheet) | |
ListFeed)) | |
col-names (if (empty? rows) [] (.getTags (.getCustomElements (first rows))))] | |
(map (fn [r] (reduce merge | |
(map (fn [c] | |
{c (.getValue (.getCustomElements r)c)}) | |
col-names))) | |
rows))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(let [google-service (service (spreadsheet-service "servicename") | |
(credentials "gservice-account-credential" | |
pkey-file "https://spreadsheets.google.com/feeds")) | |
all-spreadsheets (get-spreadsheets google-service)]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment