вторник, 4 января 2011 г.

Google Docs Spreadsheets Tweet

function main() {
// var user_id = '';
setTweet(getTweet(user_id));
}

function setTweet(parsed_response) {
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rResponse = parsed_response.reverse();
var ids = getIds();

Res:
for(var i = 0; i < rResponse.length; i += 1) {
Sheet:
for(var j = 0; j < ids.length; j += 1) {
if((typeof ids[j]) === 'number') {
// sheet から取得した値が number の場合
id = ids[j].toString(10);
} else {
id = ids[j];
}
if(rResponse[i].id_str === id) {
continue Res;
}
}
var lastId = getId();
var idColumn = 1;
var lastRow = spread_sheet.getLastRow();
// | id | text | created_at |
spread_sheet.getRange(lastRow + 1, idColumn).setValue(rResponse[i].id_str);
spread_sheet.getRange(lastRow + 1, idColumn + 1).setValue(rResponse[i].text);
spread_sheet.getRange(lastRow + 1, idColumn + 2).setValue(rResponse[i].created_at);
}
}

function getTweet(user_id) {
var url = 'http://api.twitter.com/1/statuses/user_timeline.json?';
var id = getId();
var response = 0;
if(id === 'id') {
// 初回のみ
var count = '1';
response = UrlFetchApp.fetch(url + 'user_id=' + user_id + '?' + 'count=' + count);
} else {
// 前回取得した Tweet から後の Tweet を取得
response = UrlFetchApp.fetch(url + 'user_id=' + user_id + '?' + 'since_id=' + id);
}

var parsed_response = 0;
if(response.getResponseCode() !== 200) {
Browser.msgBox('Error: Response Code = ' + response.getResponseCode());
} else {
parsed_response = Utilities.jsonParse(response.getContentText());
}
return parsed_response;
}

function getIds() {
// 記録済みの全ての id を取得する
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var idColumn = 1;
var lastRow = spread_sheet.getLastRow();
var ids = [];
for(var i = 1; i <= lastRow; i += 1) {
var id = spread_sheet.getRange(i, idColumn).getValue();
ids[i] = id;
}
return ids;
}

function getId() {
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = spread_sheet.getLastRow();
var idColumn = 1;
var id = spread_sheet.getRange(lastRow, idColumn).getValue();

//Browser.msgBox(id);
return id;
}

Комментариев нет:

Отправить комментарий