September 13, 2011

Google Developer Day 2011:DevQuiz解答晒し大会(5)

分野別問題(4) Google Apps Script

APIのドキュメントを見ながら書いてみたスクリプトがこんな感じ。

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var response = UrlFetchApp.fetch("http://gdd-2011-quiz-japan.appspot.com/apps_script/data?param=8020112495504250004");
  var data_string = response.getContentText();
  var data = Utilities.jsonParse(data_string);
  for (var i = 0; i < data.length; i++) {
    var city = data[i];
    var sheet = spreadsheet.insertSheet();
    sheet.setName(city["city_name"]);
    var city_data = city["data"];
    for (var j = 0; j < city_data.length; j++) {
      var daily = city_data[j];
      var usage = daily["usage"];
      var capacity = daily["capacity"];
      var rate = Math.floor(usage * 10000 / capacity + 0.5) / 100;
      sheet.getRange(j+1, 2, 1, 1).setValue(usage);
      sheet.getRange(j+1, 1, 1, 1).setValue(capacity);
      sheet.getRange(j+1, 3, 1, 1).setValue(rate+"%");
    }
  }
  var sheet = spreadsheet.getSheetByName("シート1");
  if (sheet != null) {
    spreadsheet.setActiveSheet(sheet);
    spreadsheet.deleteActiveSheet();
  }
}