Skip to content

Instantly share code, notes, and snippets.

@masuidrive
Created May 7, 2013 06:09
Show Gist options
  • Save masuidrive/5530560 to your computer and use it in GitHub Desktop.
Save masuidrive/5530560 to your computer and use it in GitHub Desktop.
// 取得するJSONのURL
var url = "http://api.openweathermap.org/data/2.5/weather?lat=35.65858&lon=139.745433";
// データを保存するシート
var data_sheet_name = 'data';
// アップデートするチャートの名前
var chart_sheet_name = 'charts';
var chart_name = 'Temps';
// JSONのデータを配列に変換
var data_to_line = function(data) {
return [new Date(), data.main.temp, data.main.humidity];
}
function fetchJSON() {
var response = UrlFetchApp.fetch(url);
if (response.getResponseCode() == 200) {
var data = Utilities.jsonParse(response.getContentText());
var doc = SpreadsheetApp.getActiveSpreadsheet();
var data_sheet = doc.getSheetByName(data_sheet_name);
appendDataToBottom(data_sheet, data);
var charts_sheet = doc.getSheetByName(chart_sheet_name);
updateChart(charts_sheet, chart_name, data_sheet, 4);
}
}
function appendDataToBottom(sheet, data) {
var start_row = sheet.getLastRow() + 1;
var line = data_to_line(data);
sheet.getRange(start_row, 1, 1,line.length).setValues([line]);
}
function updateChart(charts_sheet, chart_title, data_sheet, cols) {
var charts = charts_sheet.getCharts();
for (var i in charts) {
var chart = charts[i];
if(chart.getOptions().get("title") == chart_title) {
var builder = chart.modify();
var ranges = chart.getRanges();
for (var j in ranges) {
builder.removeRange(ranges[j]);
}
var newRange = data_sheet.getRange(1, 1, data_sheet.getLastRow()+1, cols);
builder.addRange(newRange);
charts_sheet.updateChart(builder.build());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment