org.mule.modules

mule-module-google-spreadsheet

config-with-oauth

Namespacehttp://www.mulesoft.org/schema/mule/google-spreadsheets
Schema Locationhttp://www.mulesoft.org/schema/mule/google-spreadsheets/current/mule-google-spreadsheets.xsd  (View Schema)
Schema Version1.0
Minimum Mule Version3.5

Module Overview

Connector for accessing, creating and modifying google docs spreadsheets. This connector uses OAuth2 for authentication.

Summary

Configuration
<google-spreadsheets:config-with-oauth>
Configure an instance of this module
Message Processors
<google-spreadsheets:create-spreadsheet>
Creates a new spreadsheet using a given title
<google-spreadsheets:create-worksheet>
Creates a new worksheet for an specified spreadsheet
<google-spreadsheets:delete-worksheet>
Deletes an specified worksheet
<google-spreadsheets:get-all-cells>
Returns a list of Row in which each entry represents one of the initialized cells on a worksheet
<google-spreadsheets:get-all-cells-as-csv>
Returns a CSV file representing all the initialized cells in a worksheet.
<google-spreadsheets:get-all-spreadsheets>
Returns all the spreadsheets associated with the user's account
<google-spreadsheets:get-all-worksheets>
Lists all the worksheets contained in an specified spreadsheet
<google-spreadsheets:get-authors>
Returns a list of com.google.gdata.data.Person where each entry represent a a contributor on a specified spreadsheet
<google-spreadsheets:get-cell-range>
Returns a list of Row containing the cells contained in a given range
<google-spreadsheets:get-cell-range-as-csv>
Returns a CSV file representing the requested cell range.
<google-spreadsheets:get-column-headers>
This processor returns the a worksheet's first row
<google-spreadsheets:get-spreadsheets-by-title>
Returns a list of Spreadsheet with all the spreadsheets associated with the user which title matches the one specified.
<google-spreadsheets:get-worksheet-by-title>
Returns a list of Worksheet which title matches the one specified.
<google-spreadsheets:purge-worksheet>
This processors deletes all the cell entries of a specified worksheet.
<google-spreadsheets:search>
Performs a full-text search on a worksheet and returns a list of Row in which each entry represent a cell containing a matching value
<google-spreadsheets:set-csv-values>
Performs a batch update of a worksheet's cells taking values from a csv String.
<google-spreadsheets:set-row-values>
Performs a batch update of a worksheet's cells taking values from a list of Row taken from the message payload.
<google-spreadsheets:update-worksheet-metadata>
This processor allows updating a worksheet's metadata, constituted by its title, dimensions, summary, draft and editability status.

Configuration

To use the this module within a flow the namespace to the module must be included. The resulting flow will look similar to the following:

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:google-spreadsheets="http://www.mulesoft.org/schema/mule/google-spreadsheets"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core
               http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/google-spreadsheets
               http://www.mulesoft.org/schema/mule/google-spreadsheets/current/mule-google-spreadsheets.xsd">

      <!-- here goes your flows and configuration elements -->

</mule>

This module is configured using the config element. This element must be placed outside of your flows and at the root of your Mule application. You can create as many configurations as you deem necessary as long as each carries its own name.

Each message processor, message source or transformer carries a config-ref attribute that allows the invoker to specify which configuration to use.

Attributes
TypeNameDefault ValueDescriptionJava TypeMIME TypeEncoding
xs:string name Optional. Give a name to this configuration so it can be later referenced.
xs:string applicationName Mule-GoogleSpreadsheetsConnector/1.0 Optional. Application name to communicate to google
xs:string consumerKey The OAuth consumer key
xs:string consumerSecret The OAuth consumer secret
xs:string scope https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://spreadsheets.google.com/feeds https://docs.google.com/feeds Optional. The OAuth scopes you want to request
xs:string authorizationUrl https://accounts.google.com/o/oauth2/auth Optional. The URL defined by the Service Provider where the resource owner will be redirected to grant authorization to the connector
xs:string accessTokenUrl https://accounts.google.com/o/oauth2/token Optional. The URL defined by the Service Provider to obtain an access token

OAuth2

This connector uses OAuth2 as an authorization and authentication mechanism. All the message processors or sources that require the connector to be authorized by the service provider will throw a NotAuthorizedException until the connector is authorized properly.

Authorizing the connector is a simple process of calling:

    <google-spreadsheets:authorize/>

The call to authorize the message processor must be made though a message coming from an HTTP inbound endpoint as the authorize process will reply with a redirect to the service provider. The following is an example of how to use it in a flow with an HTTP inbound endpoint:

    <flow name="authorizationAndAuthenticationFlow">
        <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
        <google-spreadsheets:authorize/>
    </flow>

If you hit that endpoint via a web-browser it will initiate the OAuth dance, redirecting the user to the service provider page and creating a callback endpoint so the service provider can call us back once the user has been authenticated. Once the callback gets called then the connector will switch to an authorized state and any message processor or source that requires authentication can be called.

The authorize message processor supports the following attributes:

Authorize Attributes
NameDefault ValueDescription
access_type online Optional. Indicates if your application needs to access a Google API when the user is not present at the browser. Use offline to get a refresh token and use that when the user is not at the browser. Default is online
force_prompt auto Optional. Indicates if google should remember that an app has been authorized or if each should ask authorization every time. Use force to request authorization every time or auto to only do it the first time. Default is auto
authorizationUrl https://accounts.google.com/o/oauth2/auth Optional. The URL defined by the Service Provider where the resource owner will be redirected to grant authorization to the connector
accessTokenUrl https://accounts.google.com/o/oauth2/token Optional. The URL defined by the Service Provider to obtain an access token
accessTokenId   Optional. The Id with which the obtained access token will be stored. If not provided, then it will be the config name

After Authorization

The authorize message processor is an intercepting one. If something that requires authentication is requested but the connector is not authorized yet, the authorize message processor will be triggered. It will redirect the user to the service provider so that he can authorize the connector. This is why the authorize message processor needs to be behind an http:inbound-endpoint. Once authentication and authorization are successful, the service provider will respond to the connector with a callback. The connector will extract information from this callback, set its own internal state to authorized, and then move on to executing anything that had been interrupted by the authorization method.

  <flow name="authorizationAndAuthenticationFlow">
      <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
      <google-spreadsheets:authorize/>
      <http:response-builder status="200">
          <set-payload value="You have successfully authorized the connector"/>
      </http:response-builder>
  </flow>

In the above example we added the http:response-builder (keep in mind that this element is available only in Mule 3.3.0 and later). If the connector is not yet authorized, the execution of the response builder will be delayed until the callback is received.

On the other hand, if the connector had already been authorized before, then the flow execution will not be delayed; it will continue and the http:response-builder will get executed right away rather than after the callback.

Error Handling during Authorization

If for any reason, an error occurs while processing the callback, the exception strategy of the flow containing the authorize will be executed. So, if the callback sent the wrong information you can handle that situation by setting up an exception strategy as follows:

  <flow name="authorizationAndAuthenticationFlow">
      <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
      <google-spreadsheets:authorize/>
      <http:response-builder status="200">
          <set-payload value="You have successfully authorized the connector"/>
      </http:response-builder>
      <catch-exception-strategy>
         <http:response-builder status="404">
             <set-payload value="An error has occurred authorizing the connector"/>
         </http:response-builder>
      </catch-exception-strategy>
  </flow>

What happens if a tenant who is not yet authorized wants to perform an OAuth protected operation? You can set this with the onNoToken property:

<google-spreadsheets:config name="google-spreadsheetss" consumerKey="${consumerKey}" consumerSecret="${consumerSecret}" onNoToken="[STOP_FLOW|EXCEPTION]">
    <google-spreadsheets:oauth-callback-config connector-ref="${oauth.http.connector}" domain="${oauth.url}" localPort="${https.port}" async="false" path="oauth2callback" />
</google-calendars:config-with-oauth>

The onNoToken property can be set to two different values:

Unauthorize

Once this connector has been authorized further calls to the authorize message processor will be no-ops. If you wish to reset the state of the connector back to a non-authorized state you must call:

    <google-spreadsheets:unauthorize/>

Keep in mind that after the connector is unauthorized all future calls that attempt to access protected resources will fail until the connector is re-authorized.

Callback Customization

As mentioned earlier, once authorize gets called and before we redirect the user to the service provider, we create a callback endpoint. The callback endpoint will get called automatically by the service provider once the user is authenticated and he grants authorization to the connector to access his private information.

The callback can be customized in the config element of the this connector as follows:

    <google-spreadsheets:config>
        <google-spreadsheets:oauth-callback-config domain="${fullDomain}" localPort="${http.port}" remotePort="80" defaultAccessTokenId="#[message.inboundProperties['tenantId']]" />
    </google-spreadsheets:config>

The oauth-callback-config element can be used to customize the endpoint that gets created for the callback. It features the following attributes:

OAuth Callback Config Attributes
NameDescription
connector-ref Optional. Reference to a user-defined HTTP connector.
domain Optional. The domain portion of the callback URL. This is usually something like xxx.cloudhub.io if you are deploying to CloudHub for example.
localPort Optional. The local port number that the endpoint will listen on. Normally 80, in the case of CloudHub you can use the environment variable ${http.port}.
remotePort Optional. This is the port number that we will tell the service provider we are listening on. It is usually the same as localPort but it is separated in case your deployment features port forwarding or a proxy.
path Optional. Path under which the callback should be exposed. If not specified a random path will be generated.
defaultAccessTokenId Optional. A Mule Expression to use as access token id. If provided, this expression will be evaluated for all obtained access tokens and the result will be used as their id (except in the cases in which a specific acessTokenId was provided on the authorize processor

The example shown above is what the configuration would look like if your app would be deployed to CloudHub.

Access Token Store

This connector has the capability of automatically saving and restoring access tokens. The connector will store in either the default user object store or a user-defined one the acquired access tokens, refresh tokens, and any other pertinent information using the access token identifier as the key.

The object store can be configured as follows

    <google-spreadsheets:config>
        <google-spreadsheets:oauth-store-config objectStore-ref="my-object-store"/>
    </google-spreadsheets:config>

There is only a single attribute entitled objectStore-ref in the oauth-store-config element that allows the user to specify the name of the object store that he wishes to use to save and restore access tokens.

Another important aspect of the token store is the ids. This connector supports multi-tenancy, which means that each instance of this connector is capable of supporting multiple concurrent users. Therefore, each access token is given an id to identify the owning tenant.

By default, the connector's config name is used the access token id. Also, by default, at the time of using a protected operation, it's not mandatory to provide an accessTokenId since the config's name will also be used by default.

This defaults are fine for the single-tenant case or for CloudHub enabled multi-tenancy. If you are running on-premise or you are not using Cloudhub's multi-tenancy mode, there are a couple of ways in which you can easily handle your token ids manually.

First, you can specify a defaultAccessTokenId on the connector's callback element. Each time a callback is received, that expression will get evaluated and the resulting value will be used as the token id. At the same time, when using a protected operation that expression will be evaluated to obtain the id of the access token to fetch.

Another option is to use to provide an accessTokenId expression on the authorize processor. If you do so, the expression's result will be used as the token id instead. Notice that if you choose to force the token id like this, then you also need to provide a matching accessTokenId expression on each protected operation that uses that token.

Message Processors

<google-spreadsheets:create-spreadsheet>

Creates a new spreadsheet using a given title

XML Sample
<google-spreadsheets:create-spreadsheet title="My mule Spreadsheet"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
title The title you want the new spreadsheet to have String */* UTF-8
Exception Payloads
Payload ClassDescription
OAuthException if there's an error authenticating
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:create-worksheet>

Creates a new worksheet for an specified spreadsheet

XML Sample
<google-spreadsheets:create-worksheet spreadsheet="My mule Spreadsheet" title="My mule worksheet"
					  rowCount="10" colCount="15"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet that will contain the new worksheet String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
title The title you want the new worksheet to have String */* UTF-8
rowCount The initial number of rows you want the worksheet to have int */*
colCount The initial number of columns you want the worksheet to have int */*
Returns
Return Type Description
Worksheet an instance of Worksheet representing the newly created worksheet
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:delete-worksheet>

Deletes an specified worksheet

XML Sample
<google-spreadsheets:delete-worksheet spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet that contains the worksheet to be deleted String */* UTF-8
worksheet The title of the worksheet you want to delete String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-all-cells>

Returns a list of Row in which each entry represents one of the initialized cells on a worksheet

XML Sample
<google-spreadsheets:get-all-cells spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet on which the cells are String */* UTF-8
worksheet The title of the worksheet containing the cells you want to get String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
List<Row> a list of Cell
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-all-cells-as-csv>

Returns a CSV file representing all the initialized cells in a worksheet. Athough this method is intended for generating a CSV file, notice that the column and line separator are customizable so you could use it to generated a text delimited file that is not strictly speaking a CSV. The generated file will have one line per cell and the following columns structure Row Number | Column Number | evaluated Value

XML Sample
<google-spreadsheets:get-all-cells-as-csv spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet on which the cells are String */* UTF-8
worksheet The title of the worksheet containing the cells you want to get String */* UTF-8
columnSeparator , Optional. Specifies the character to be used as a column sperator. Defaults to a comma character String */* UTF-8
lineSeparator \n Optional. Specifies the character to be used as a line separator. Defaults to the new line \n character String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
String a list of Cell
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-all-spreadsheets>

Returns all the spreadsheets associated with the user's account

XML Sample
<google-spreadsheets:get-all-spreadsheets />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
Returns
Return Type Description
List<Spreadsheet> a list of @{link org.mule.module.google.spreadsheet.model.Spreadsheet}
Exception Payloads
Payload ClassDescription
OAuthException if there's an error authenticating
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-all-worksheets>

Lists all the worksheets contained in an specified spreadsheet

XML Sample
<google-spreadsheets:get-all-worksheets spreadsheet="My mule Spreadsheet"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet you want to get the worksheets from String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
List<Worksheet> a list of Worksheet
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-authors>

Returns a list of com.google.gdata.data.Person where each entry represent a a contributor on a specified spreadsheet

XML Sample
<google-spreadsheets:get-authors spreadsheet="My mule Spreadsheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet from which the info should be taken from String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
List<Person> a list of com.google.gdata.data.Person where each entry represent a spreadsheet's contributor
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-cell-range>

Returns a list of Row containing the cells contained in a given range

XML Sample
<google-spreadsheets:get-cell-range spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet"
				minRow="1" maxRow="10"
				minCol="1" maxCol="10" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet on which the cells are String */* UTF-8
worksheet The title of the worksheet containing the cells you want to get String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
minRow The range starting row. This is a 1-based index int */*
maxRow The range ending row. This is a 1-based index int */*
minCol The range starting column. This is a 1-based index int */*
maxCol The range ending column. This is a 1-based index int */*
Returns
Return Type Description
List<Row> a list of Row
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-cell-range-as-csv>

Returns a CSV file representing the requested cell range. Athough this method is intended for generating a CSV file, notice that the column and line separator are customizable so you could use it to generated a text delimited file that is not strictly speaking a CSV. The generated file will have one line per cell and the following columns structure Row Number | Column Number | evaluated Value

XML Sample
<google-spreadsheets:get-cell-range-as-csv spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet"
				minRow="1" maxRow="10"
				minCol="1" maxCol="10" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet on which the cells are String */* UTF-8
worksheet The title of the worksheet containing the cells you want to get String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
columnSeparator , Optional. Specifies the character to be used as a column sperator. Defaults to a comma character String */* UTF-8
lineSeparator \n Optional. Specifies the character to be used as a line separator. Defaults to the new line \n character String */* UTF-8
minRow The range starting row. This is a 1-based index int */*
maxRow The range ending row. This is a 1-based index int */*
minCol The range starting column. This is a 1-based index int */*
maxCol The range ending column. This is a 1-based index int */*
Returns
Return Type Description
String a list of Row
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-column-headers>

This processor returns the a worksheet's first row

XML Sample
<google-spreadsheets:get-column-headers spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet from which the info should be taken from String */* UTF-8
worksheet The title of the worksheet from which the info should be taken from String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
Row an instance of Row is the worksheet has a first row initialized, null otherwise
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-spreadsheets-by-title>

Returns a list of Spreadsheet with all the spreadsheets associated with the user which title matches the one specified.

XML Sample
<google-spreadsheets:get-spreadsheets-by-title title="My mule Spreadsheet"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
title The title to be used in the search String */* UTF-8
Returns
Return Type Description
List<Spreadsheet> a list of Spreadsheet
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:get-worksheet-by-title>

Returns a list of Worksheet which title matches the one specified. This is not a global search. Only worksheets attached to a specified spreadsheet will be considered

XML Sample
<google-spreadsheets:get-worksheet-by-title spreadsheet="My mule Spreadsheet" title="My mule worksheet"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet in which you want to perform the search String */* UTF-8
title The title to be used in the search String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
List<Worksheet> a list of Worksheet
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:purge-worksheet>

This processors deletes all the cell entries of a specified worksheet.

XML Sample
<google-spreadsheets:purge-worksheet spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" />

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet to be purged String */* UTF-8
worksheet The title of the worksheet to be purged String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:search>

Performs a full-text search on a worksheet and returns a list of Row in which each entry represent a cell containing a matching value

XML Sample
<google-spreadsheets:search spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" query="Mule is Here"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet containing the worksheet on which the cells are String */* UTF-8
worksheet The title of the worksheet containing the cells you want to get String */* UTF-8
query A full text search string, with space-separated keywords String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Returns
Return Type Description
List<Row> a list of Cell
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

<google-spreadsheets:set-csv-values>

Performs a batch update of a worksheet's cells taking values from a csv String. This csv file can have multiple lines and columns and you get to specify what those separators are. You can manually specify the csv string or else it will automatically taken from the message payload

XML Sample
<google-spreadsheets:set-csv-values spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" purge="true"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet you want to update String */* UTF-8
worksheet The title of the worksheet you want to update String */* UTF-8
csv #[payload:] Optional. The csv content to be set on the worksheet. You can manually specify it or else it will be taken from the message payload String */* UTF-8
startingRow 1 Optional. The number of the row where the first line of the csv will be set into. This is a 1-based index int */*
startingColumn 1 Optional. The number of the column where the first value of each line of the csv will be set into. This is a 1-based index int */*
lineSeparator \n Optional. Specifies the character to be used as a line separator. Defaults to the new line \n character String */* UTF-8
columnSeparator , Optional. Specifies the character to be used as a column sperator. Defaults to a comma character String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
purge false Optional. If true, the worksheet will be purged before the values are set boolean */*
Exception Payloads
Payload ClassDescription
Exception if an error occurs

<google-spreadsheets:set-row-values>

Performs a batch update of a worksheet's cells taking values from a list of Row taken from the message payload.

XML Sample
<google-spreadsheets:set-row-values spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" purge="true">
	<google-spreadsheets:rows ref="#[payload]"/>
</google-spreadsheets:set-row-values>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet you want to update String */* UTF-8
worksheet The title of the worksheet you want to update String */* UTF-8
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
purge false Optional. If true, the worksheet will be purged before the values are set boolean */*
Child Elements
NameDefault ValueDescriptionJava Type
<google-spreadsheets:rows> #[payload:] Optional. A list of Row taken from the message payload describing the values to be set List<Row>
Exception Payloads
Payload ClassDescription
Exception if an error occurs

<google-spreadsheets:update-worksheet-metadata>

This processor allows updating a worksheet's metadata, constituted by its title, dimensions, summary, draft and editability status.

XML Sample
<google-spreadsheets:update-worksheet-metadata spreadsheet="My mule Spreadsheet" worksheet="My mule worksheet" 
			title="#[map-payload:title]" rowCount="#[map-payload:rowCount]" colCount="#[map-payload:colCount]"
			summary="#[map-payload:summary]"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
spreadsheet The title of the spreadsheet you want to update String */* UTF-8
worksheet The title of the worksheet you want to update String */* UTF-8
title Optional. If specified, it changes the title you want to set String */* UTF-8
draft Optional. If specified, it changes the value of the draft property Boolean */*
canEdit Optional. If specified, it changes the worksheet's editability Boolean */*
summary Optional. If specified, it changes the worksheet's summary String */* UTF-8
rowCount 0 Optional. If a value greater than zero is specified, it changes the amount of rows in the worksheet int */*
colCount 0 Optional. If a value greater than zero is specified, it changes the amount of columns in the worksheet int */*
spreadsheetIndex 0 Optional. Google's api allows for several spreadsheet to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
worksheetIndex 0 Optional. Google's api allows for several worksheets to have the same name. In this cases it returns a list with all the ones matching the given title. Use this optional attribute to specify the zero-based list index of the want you want to use int */*
Exception Payloads
Payload ClassDescription
IOException if there's a communication error with google's servers
ServiceException if the operation raises an error on google's end

Message Sources

Transformers