Hi,
I am reading data from a Google Spreadsheet using the Visualization
API. If I add data to a new column, then delete that data, everything
works fine - the new data will show, then on the next refresh it will
go away since it's been deleted. But on the next refresh (currently
set to 1 minute), the deleted data is being returned again! The
spreadsheet has not been changed. Here is the relevant code. Does
anybody know what's going on?
var url = null;
var refreshInterval = null;
var callback = null;
var isVisualizationLoaded = false;
var query = null;
var heartbeatTimerId = 0;
function getData(url, refreshInterval, callbackn) {
this.url = url;
this.refreshInterval = refreshInterval;
this.callback = callback;
//For some reason, trying to load the Visualization API more than
once does not execute the callback function.
if (!isVisualizationLoaded) {
loadVisualizationAPI();
}
else {
sendQuery();
}
}
function loadVisualizationAPI() {
isVisualizationLoaded = true;
google.load("visualization", "1", {"callback" : sendQuery});
}
/**
* Create a query , then send it to the spreadsheet data source.
* Also give the name of a function ("handleQueryResponse") to
* run once the spreadsheet data is retrieved.
*/
function sendQuery() {
if (query !== null) {
query.abort(); //Stop the automated query sending set by
Refresh Interval.
}
query = new google.visualization.Query(url);
query.setRefreshInterval(refreshInterval);
query.send(processResponse);
}
function processResponse(response) {
var data, text, json;
restartHeartbeatTimer();
//Get spreadsheet data.
data = response.getDataTable();
text = data.toJSON();
json = JSON.parse(text);
//Call the callback function.
callback(json);
}
/**
* Monitor Visualization API refresh updates with Heartbeat Timer.
* This is a work around for Visualization API bug when it stops
* refreshing data if data hadn't change for 2 consequent data
requests.
*/
function restartHeartbeatTimer() {
clearTimeout(heartbeatTimerId);
var interval = 0;
try
{
//Set Heartbeat Timer to 3x times longer then refresh
interval.
var interval = 3 * 1000 * refreshInterval;
}
catch(err)
{}
if (interval > 0) {
heartbeatTimerId = setTimeout('sendQuery()', interval);
}
}
--
You received this message because you are subscribed to the Google Groups
"Google Visualization API" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-visualization-api?hl=en.