Google Apps Script入門
グラフ

Google Apps Script(GAS)の入門解説です
公開日:2016-12-21 最終更新日:2016-12-21

第32回.グラフ

Google Apps Script で、スプレッドシートにグラフを挿入します。


スクリプトであまり凝ったレイアウトのグラフを作成しようとすると、結構大変になりますので、

そのような場合は、手動で作成したグラフをスクリプトで変更する等の工夫も必要です。


以下のきわめて単純な表をサンプルとして解説します。

google apps script 画像


グラフを扱うメソッドの概要

Sheetのメソッドを使います。

メソッド 簡単な説明
getCharts() シートのグラフの配列を返します。
insertChart(chart) シートに新しいグラフを追加します。
newChart() シートに新しいグラフを作成するためのビルダーを返します。
removeChart(chart) シートからグラフを削除します。
updateChart(chart) シート上のグラフを更新します。

グラフを新規作成・変更・削除する場合の概要は、以下の順にメソッドを使用します。

グラフを新規に作成する場合
・newChart()でEmbeddedChartBuilderを生成
・Builderのメソッドで各種設定
・insertChart(chart)でシートにグラフを挿入
グラフを変更する場合
・getCharts()でchart(グラフ)を取得
・chartのメソッドmodify()でEmbeddedChartBuilderを生成
・Builderのメソッドで各種設定
・updateChart(chart)でシートのグラフを変更
グラフを削除する場合
・getCharts()でchart(グラフ)を取得
・removeChart(chart)でシートのグラフを削除
EmbeddedChartBuilder
方法 簡単な説明
addRange(range) このビルダーによって表されるグラフに範囲を追加します。
asAreaChart() AreaChartするグラフの種類を設定し、返します。
asBarChart() BarChartコントロールにグラフの種類を設定し、返します
asColumnChart() ColumnChartのにグラフの種類を設定し、返します
asLineChart() 折れ線グラフにグラフの種類を設定し、返します
asPieChart() 円グラフにグラフの種類を設定し、返します
asScatterChart() ScatterChartするグラフの種類を設定し、返します
asTableChart() TableChartにグラフの種類を設定し、返します
build() それに対して行われたすべての変更を反映するために、グラフを作成します。
getChartType() 現在のグラフの種類を返します。
getContainer() チャートがシートに表示される場所カプセル化ContainerInfoを返します。
getRanges() 現在、このグラフのデータを提供する範囲のリストのコピーを返します。
removeRange(range) このビルダーによって表されるチャートから指定した範囲を削除します。
setChartType(type) グラフの種類を変更します。
Charts.ChartTypeの列挙型を指定します。


プロパティ 説明
AREA 面グラフ
BAR 棒グラフ
COLUMN カラムチャート
LINE 折れ線グラフ
PIE 円グラフ
SCATTER 散布図
TABLE 表チャート
setOption(option,value) このグラフの詳細オプションを設定します。
optionは、
チャートAPIのグラフギャラリーの利用可能なオプションのリストです。
setPosition(anchorRowPos,anchorColPos,offsetX,offsetY) チャートがシートに表示される場所変更、位置を設定します。


グラフを新規に作成

function mySample32_1() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(1, 1, 13, 2);
  var chart = sheet.newChart()
  .addRange(range)
  .setChartType(Charts.ChartType.LINE)
  .setOption('title', '売上推移')
  .setPosition(1, 4, 0, 0);
  sheet.insertChart(chart.build());
}
google apps script 画像

var chart = sheet.newChart()
これで、EmbeddedChartBuilderを生成しています。

.addRange(range); //データ範囲
.setChartType(Charts.ChartType.LINE); //折れ線グラフ
.setOption('title', '売上推移'); //タイトル
.setPosition(1, 4, 0, 0); //グラフ位置

.addRange(range) ~ .setPosition(1, 4, 0, 0)
ここは、newChart()で生成したEmbeddedChartBuilderに対してのメソッドになっています。
従って、

行末に、;(セミコロン)を書きません

これは、

var chart = sheet.newChart();
chart.addRange(range);
chart.setChartType(Charts.ChartType.LINE);
chart.setOption('title', '売上推移');
chart.setPosition(1, 4, 0, 0);

このように、EmbeddedChartBuilderである変数chartを全てに指定したことと同じことになります。
少し理解しずらい記述になりますが、VBAでのWith構文と同じように考えると理解しやすいと思います。

setOption(option,value)について
optionは、
チャートAPIのグラフギャラリーの利用可能なオプションのリスト
このページの、
Configuration Options表のNameが、ここで指定するoptionになります。
非常に多くのoptionがありますので、必要になった時に調べて下さい。


グラフを変更する

function mySample32_2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var chart = sheet.getCharts()[0];
  var newchart = chart
  .modify()
  .setChartType(Charts.ChartType.COLUMN)
  .build();
  sheet.updateChart(newchart);
}
google apps script 画像

var chart = sheet.getCharts()[0];
chart(グラフ)を取得しています。

.modify()
EmbeddedChartBuilderを生成しています。

.setChartType(Charts.ChartType.COLUMN)
棒グラフに変更しています。

.build()
設定した内容でグラフが作成されます。

sheet.updateChart(newchart)
シートに変更後のグラフを反映させます。

.modify().build()、この流れをしっかりと把握してください。


グラフを削除する

function mySample32_3() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var chart = sheet.getCharts()[0];
  sheet.removeChart(chart);
}
var chart = sheet.getCharts()[0];
chart(グラフ)を取得しています。

sheet.removeChart(chart)
chart(グラフ)を削除します。


グラフは様々な形式が作れますが、
あまり凝ったグラフを作ったとしても、「キレイだ」と言うだけでは意味がありません。
そのグラフで何を訴えたいのかを良く考えて作成しましょう。
シンプルなグラフの方が訴求力が高いという事も多いものです。




同じテーマ「Google Apps Script入門」の記事

第29回.メモの挿入・削除と改行文字
第30回.並べ替え
第31回.入力規則
第32回.グラフ
第33回.表示の固定
第34回.シート保護
第35回.スプレッドシートが非常に遅い、高速化するには
第36回.フォルダとファイルを扱う(DriveApp)
第37回.フォルダの一覧取得・作成・削除(Folder)
第38回.ファイルの一覧取得・削除(File)
Excel流の最終行の取得


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ