// PUT https://spreadsheets.google.com/feeds/list/{key}/{worksheetId}/{visibility}/{projection}/{rowId} function request(data) { var rows = (data[1].feed.entry || []).map(function(row) { var ret = {id: row.id.$t.substring(row.id.$t.lastIndexOf('/') + 1)}; ret.etag = row.gd$etag; for (var key in row) { if (key.indexOf('gsx$') === 0) ret[key.substring(4)] = row[key].$t } return ret }) var issues = []; data[0].forEach(function(page) {issues = issues.concat(page)}); issues = issues.filter(function(i) {return i}) .map(global.issueToRow) issues.forEach(function(i) { var row = rows.filter(function(r) {return parseInt(r.number) === i.number})[0] if (!row) return; row.isChanged = false; global.fields.forEach(function(field) { if (row[field] !== i[field]) row.isChanged = true; row[field] = i[field]; }) }) rows = rows.filter(function(r) {return r.isChanged}) return rows.map(function(row) { console.log('r.created', row.created); return { 'GData-Version': '2.1', visibility: 'private', projection: 'full', key: constants.spreadsheetID, worksheetId: 'od6', alt: 'json', rowId: row.id, body: global.rowXML(row), 'Content-Type': 'application/atom+xml', } }) }