GASでスプレッドシートのシートにあるグラフを取得する方法(getChartsメソッド)

スプレッドシートに入力されたデータを分かりやすくするため、グラフにして図示します。

このスプレッドシート上に作成されたグラフをGoogle Apps Script(GAS)で取得する方法を解説します。

スプレッドシートの数値をグラフで分かりやすく

Googleスプレッドシートは、マイクロソフトのエクセルと同等の機能を持つ表計算アプリです。

売り上げや仕入れデータなど様々な数値を格納し、データ管理することができます。

ただ、スプレッドシートのセルを使ってデータを入力しているだけだと、人間にはデータの傾向がつかみにくいです。

時系列や取引ごとの数値だけを眺めていても、データが持つ特徴や特性を発見しづらくなっています。

そうしたときにグラフを使った数値の図示が重要です。

スプレッドシートのシートの数値データのグラフ

スプレッドシートではグラフ化したいセル範囲を選択することで、グラフをシートに挿入できます。

図示したグラフを見ることで時系列的な変化や、今後の傾向を予測やすくなります。

GASでスプレッドシートのグラフを取得可能

Google Apps Script(GAS)はスプレッドシートのデータ処理によく用いられます。

スプレッドシートにはいろいろな関数が用意されているので、複雑な計算も行えますが、限界があります。

GASを利用すれば、スプレッドシートの関数では実現不可能なデータ加工が可能になります。

そんなGASにはスプレッドシートのシート上に存在するグラフも取得可能です。

GASでスプレッドシートのグラフを取得することで、レポート自動作成に活用することができます。

シート上のグラフを取得するgetChartsメソッド

Google Apps Script(GAS)でスプレッドシートのグラフを取得する方法は、getChartsメソッドを利用します。

sheet.getCharts()

getChartsメソッドは、Spreadsheetオブジェクトでは実行できず、個々のsheetオブジェクトで実行可能です。

実行したsheetオブジェクトのシート上に存在しているすべてのグラフを配列形式で取得します。

グラフを取得したあとにgetBlobメソッドまたは、getAsメソッドを使い、Blob形式の画像ファイルに変換できます。

この画像ファイルをメールに添付したり、Googleドライブに保存したり、Googleドキュメントに差し込むことがGASスクリプトで可能です。

スプレッドシートのグラフを取得するGASサンプルコード

実際に、Google Apps Script(GAS)のサンプルコードを使って、getChartsメソッドを使ってスプレッドシートのグラフを取得する方法を解説します。

スプレッドシートのシートの数値データのグラフ

先程紹介した、シート上の数値からグラフを作成したスプレッドシートからグラフを取得します。

取得したシート上のグラフを画像ファイルとしてGoogleドライブに保存してみます。

スプレッドシートのシート上に存在するグラフを取得し、Googleドライブに画像ファイルとして保存するGoogle Apps Script(GAS)のサンプルコード
function saveGraphToDrive() {
  //スクリプトに紐づいたスプレッドシートのアクティブなシートを取得
  let mySheet = SpreadsheetApp.getActiveSheet();
  //アクティブなシートに存在するグラフを取得
  let graph = mySheet.getCharts();
  //シート内のグラフは1個なので、該当するgraph[0]をjpgとして取得
  let graphImage = graph[0].getBlob();
  //スプレッドシートのグラフ画像のファイル名を設定
  graphImage.setName("スプレッドシートのグラフ");
  //Googleドライブに画像を保存
  DriveApp.createFile(graphImage);
}

今回のスプレッドシートでは、シート上にグラフが1個しかないため、配列の先頭(添字:0)で目的のグラフを取得できます。

GASサンプルコードを実行すると、Googleドライブ上にグラフ画像が保存されます。

Google Apps Script(GAS)でスプレッドシートにあるグラフを取得して、Googleドライブに保存した結果

getBlobメソッドで画像ファイル生成すると、スプレッドシートのグラフはpngファイルとして保存されます。

このようにして、GASスクリプトでスプレッドシートの特定シートに存在するグラフデータを取得することができました。

メールやSlackチャットに送付など応用可能

スプレッドシート上に存在するグラフを取得できるようになると、Google Apps Script(GAS)の活用幅も広がります。

例えば、スプレッドシート上にある売り上げやKPIとなる指標の数値に基づいたグラフをGASで取得し、メールやSlackなどのチャットで週次などの定期的なタイミングで自動送付も可能です。

わざわざスプレッドシートにアクセスしなくても、メールやチャットでチェックすべきグラフを確認できるようになります。

※GASでメール本文内に画像を埋め込みメール送信する方法は以下の記事をお読みください。

さらに、データ更新の部分もGASで自動化してしまえば、数値レポート業務を自動化することも可能です。

報告文章も含めた形にしたい場合はスプレッドシートからグラフを取得し、そのグラフをGoogleドキュメントに自動で張り付けて、より本格的なレポートを作成することもできます。

このように、スプレッドシートのグラフを取得できるようになると、GASの応用範囲が広がり、より業務効率化を進められます。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシート上に存在するグラフを取得する方法を紹介しました。

GASのsheetオブジェクトに対し、getChartsメソッドでシート上にあるすべてのグラフを取得することができます。

スプレッドシートの数値だけだとデータ傾向が分かりづらいですが、グラフがあると人間が見てもデータを捉えやすいです。

GASでスプレッドシートのグラフを取得できれば、そのグラフをメールで送付したりすることができます。

さらに、Googleドキュメントのレポートにグラフを挿入することで、売上レポートの自動生成、そしてメールやSlack送付を合わせて、業務自動化が可能です。

GASでシート上にあるグラフを取得して、スプレッドシートのレポート業務の効率化を行いましょう。