Hi,
To be more generic I have created a proxy which fetches a column (the
column shouldn't be empty) and updates the same column in an iteration.
The two exceptions [1] are thrown when updating more than 500 rows. The
proxy service is attached with this mail.
A sample spreadsheet is at [2] and a sample call is as given below:
{
"accesstoken":"ya29.RAK1F3bpXOp1TxuTg7N96CPFj5d4O1p5dyTCudfXmRTSz7UWK2OzTXmbZ2-_IBfuctb-",
"key":"1HI9u5PuNxURVapBPSbj_aI_eM3C5NU6p8ftTyHdHW-g",
"workSheetId":"1",
"startRowNum":"1",
"numRows":"500",
"RetrievecolNum":"1"
}
[1]
https://docs.google.com/document/d/1z37FzNjo2WHlHZHDyBoMR8zP1_w_WA_qJwz4O3AxEGk/edit
[2]
https://docs.google.com/spreadsheets/d/1HI9u5PuNxURVapBPSbj_aI_eM3C5NU6p8ftTyHdHW-g/edit#gid=0
--
Riyafa Abdul Hameed
Software Engineering intern, WSO2
Email: [email protected]
Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
<http://facebook.com/riyafa.ahf> <http://lk.linkedin.com/in/riyafa>
<http://twitter.com/Riyafa1>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="testUpdate"
transports="http https"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence><!-- The acceess token --><property name="accesstoken1"
expression="json-eval($.accesstoken)"
scope="default"
type="STRING"/>
<!-- The key of the spreadsheet --><property name="sheetKey1"
expression="json-eval($.key)"
scope="default"
type="STRING"/>
<!-- The id of the worksheet in the spreadsheet --><property name="sheetId1"
expression="json-eval($.workSheetId)"
scope="default"
type="STRING"/>
<!-- The starting row number --><property name="rowNum1"
expression="json-eval($.startRowNum)"
scope="default"
type="STRING"/>
<!-- The last row number in the sheet --><property name="rowss1"
expression="json-eval($.numRows)"
scope="default"
type="STRING"/>
<!-- The column number of the project --><property name="retrieveColNum1"
expression="json-eval($.RetrievecolNum)"
scope="default"
type="STRING"/>
<!-- fetch the key column --><googlespreadsheet.init>
<accessToken>{$ctx:accesstoken1}</accessToken>
</googlespreadsheet.init>
<googlespreadsheet.fetchSpecificRowsOrColumns>
<key>{$ctx:sheetKey1}</key>
<worksheetId>{$ctx:sheetId1}</worksheetId>
<minRow>{$ctx:rowNum1}</minRow>
<maxRow>{$ctx:rowss1}</maxRow>
<minCol>{$ctx:retrieveColNum1}</minCol>
<maxCol>{$ctx:retrieveColNum1}</maxCol>
</googlespreadsheet.fetchSpecificRowsOrColumns>
<log level="full"/>
<!-- Iterate through the cells in the column --><iterate xmlns:abc="http://www.w3.org/2005/Atom"
id="iterator1"
expression="//abc:entry"
description="">
<target>
<sequence><!-- Get the row number and the update cell Id --><property xmlns:gs="http://schemas.google.com/spreadsheets/2006"
name="rowNum"
expression="//gs:cell/@row"
scope="default"
type="STRING"/>
<property name="updateCellId"
expression="fn:concat('R', get-property('rowNum'), 'C',get-property('retrieveColNum1'))"
scope="default"
type="STRING"/>
<property name="cellRef"
expression="//abc:entry/abc:link[2]/@href"
scope="default"
type="STRING"/>
<script language="js">var cellRef=mc.getProperty("cellRef");
var x=cellRef.split("/");
var n=x.length-1;
cellRef=x[n];
mc.setProperty("cellVersion",cellRef)</script>
<property name="row"
expression="get-property('rowNum')"
scope="default"
type="STRING"/>
<property name="col"
expression="get-property('retrieveColNum1')"
scope="default"
type="STRING"/>
<property name="inputValue" value="Testing" scope="default" type="STRING"/>
<property name="cellId"
expression="get-property('updateCellId')"
scope="default"
type="STRING"/>
<property name="cellV"
expression="get-property('cellVersion')"
scope="default"
type="STRING"/>
<property name="key"
expression="get-property('sheetKey1')"
scope="default"
type="STRING"/>
<property name="id"
expression="get-property('sheetId1')"
scope="default"
type="STRING"/>
<property name="accesstoken"
expression="get-property('accesstoken1')"
scope="default"
type="STRING"/>
<property name="Accept-Encoding" scope="transport" action="remove"/>
<googlespreadsheet.init>
<accessToken>{$ctx:accesstoken}</accessToken>
</googlespreadsheet.init>
<googlespreadsheet.updateCells>
<key>{$ctx:key}</key>
<worksheetId>{$ctx:id}</worksheetId>
<cellId>{$ctx:cellId}</cellId>
<inputValue>{$ctx:inputValue}</inputValue>
<row>{$ctx:row}</row>
<col>{$ctx:col}</col>
<cellVersion>{$ctx:cellV}</cellVersion>
</googlespreadsheet.updateCells>
<log level="full"/>
</sequence>
</target>
</iterate>
</inSequence>
</target>
<parameter name="ApplicationXMLBuilder.allowDTD">true</parameter>
</proxy>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev