Charts Servicesによるデータテーブルとチャートの利用 (6/6)
作成:2011-09-26 08:58
更新:2011-09-26 08:58
更新:2011-09-26 08:58
■スプレッドシートのデータからチャートを生成する
では、このチャート機能をもう少し実用的に使うことを考えてみましょう。スクリプトの中で表示する内容を直接記述していたのでは、汎用的なスクリプトにはなりません。そこで、あらかじめ作成しておいたスプレッドシートからデータを取り出し、それをもとにチャートを作成するサンプルを考えてみることにしましょう。
まず、データを保管するスプレッドシートを作成しておきます。Googleドキュメントで新たに表計算のドキュメントを作り、最初の「シート1」というシートに、左上から順にデータを記述しておきましょう。
下のリストが、サンプルコードです。openByIdの"……ID……"部分には、それぞれのスプレッドシートのIDを指定してください。これで、スプレッドシートの「シート1」のA1~C4までのデータを取り出し、グラフ化して表示をしています。
ここでは、まずSpreadsheetApp.openByIdでスプレッドシートを開き、getSheetByNameでその中から必要なシートを取得しています。今回はサービスとして公開利用する形を考えていますので、ActiveSheetではなく、このように指定のシートをオープンして利用するようにしました。
後は、必要に応じてgetRange().getValueでセルの値を取り出し、データをaddRowしていくだけです。SpreadsheetApp/SheetとCharts Servicesがわかれば、このように連携してデータを処理していくことも簡単に行えます。
ここまでくると、「このチャート、そのままスプレッドシートに貼って使えないの?」と思うかも知れません。残念ながら、今のところは無理なようです。Sheet側にそのための仕組み(メソッド)が用意されていないからです。ただし、Google Apps Scriptは現在も進化中ですから、いずれ可能になるかも知れません。期待して待ちましょう!
まず、データを保管するスプレッドシートを作成しておきます。Googleドキュメントで新たに表計算のドキュメントを作り、最初の「シート1」というシートに、左上から順にデータを記述しておきましょう。
支店名 上半期 下半期数値などはそれぞれ適当に変更してかまいません。ただ、今回は横3列×縦4行の固定データでチャートを作成するので、それにあわせてデータを用意して下さい。
東京 1024 891
大阪 659 478
名古屋 237 395
下のリストが、サンプルコードです。openByIdの"……ID……"部分には、それぞれのスプレッドシートのIDを指定してください。これで、スプレッドシートの「シート1」のA1~C4までのデータを取り出し、グラフ化して表示をしています。
ここでは、まずSpreadsheetApp.openByIdでスプレッドシートを開き、getSheetByNameでその中から必要なシートを取得しています。今回はサービスとして公開利用する形を考えていますので、ActiveSheetではなく、このように指定のシートをオープンして利用するようにしました。
後は、必要に応じてgetRange().getValueでセルの値を取り出し、データをaddRowしていくだけです。SpreadsheetApp/SheetとCharts Servicesがわかれば、このように連携してデータを処理していくことも簡単に行えます。
ここまでくると、「このチャート、そのままスプレッドシートに貼って使えないの?」と思うかも知れません。残念ながら、今のところは無理なようです。Sheet側にそのための仕組み(メソッド)が用意されていないからです。ただし、Google Apps Scriptは現在も進化中ですから、いずれ可能になるかも知れません。期待して待ちましょう!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
function doGet() {
var sheet = SpreadsheetApp.openById("……ID……").
getSheetByName("シート1");
var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING,
sheet.getRange(1, 1).getValue());
for(var i = 2;i <= 3;i++){
data.addColumn(Charts.ColumnType.NUMBER,
sheet.getRange(1, i).getValue());
}
for(var i = 2;i <= 4;i++){
var arr = [sheet.getRange(i, 1).getValue(),
sheet.getRange(i, 2).getValue(),
sheet.getRange(i, 3).getValue()];
data.addRow(arr);
}
data.build();
var chart = Charts.newColumnChart()
.setDataTable(data)
.setTitle("携帯端末販売")
.setDimensions(400, 350)
.setStacked()
.setColors(["#FF9999","#99FF99"])
.build();
var uiApp = UiApp.createApplication().setTitle("サンプルチャート");
uiApp.add(chart);
return uiApp;
}
※関連コンテンツ
「Google Apps Scriptプログラミング [中級編]」に戻る