[Google][Developer][Day][2011] Google Apps Scriptのソースコード

http://code.google.com/intl/ja/googleapps/appsscript/guide.html は、
Googleスプレッドシートやその他のGoogleプロダクトをJavaScriptを用いて制御する仕組みだそうです。
Excelのマクロのようなものでしょうか。
JavaScriptで制御できるというのはいいですね。


問題は、JSONで提供されている都市ごとの日別供給電力と最大消費電力を
Google Apps Scriptでスプレッドシートに展開してください、というものです。

私は、以下の3つの関数を定義して回答しました。

  • GET_JSON
  • SETUP_SHEET
  • SETUP_SHEETS


下記がコードです。

function GET_JSON() {
  var response = UrlFetchApp.fetch("http://gdd-2011-quiz-japan.appspot.com/apps_script/data?param=4627646934474507351");
  var jsonString = response.getContentText();  
  var jsonObj = Utilities.jsonParse(jsonString);
  return jsonObj;
}

function SETUP_SHEET(json) {
  var usage      = 0;
  var percentage = 0;
  var dataCount  = 1;
  var city = json.city_name;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(city);

  data = json.data;
  sheet.setName(city);
  for(var powerIdx in data) {      
    capacity   = data[powerIdx].capacity;
    usage      = data[powerIdx].usage;
    percentage = usage / capacity * 100;
    
    sheet.getRange(dataCount, 1).setValue(capacity);
    sheet.getRange(dataCount, 2).setValue(usage);
    sheet.getRange(dataCount, 3).setValue(percentage + '%');
    dataCount += 1;
  }
}

function SETUP_SHEETS() {
  var json = GET_JSON();
  for(var cityIdx in json) {
    SETUP_SHEET(json[cityIdx]);
  }
}


きちんとスクリプト作成・編集用のツールが用意されていて、スクリプトデバッグ実行も
できるというスグレモノでした。
# FirefoxだとGoogle Docsが動作しなかったのはなんでだろう・・・。