GASでグラフ自動作成!EmbeddedChartBuilder.asAreaChartで定期レポートを効率化

GASでグラフ自動作成!EmbeddedChartBuilder.asAreaChartで定期レポートを効率化

本記事では、Google Apps Script (GAS) の EmbeddedChartBuilder.asAreaChart 関数を利用して、エリアチャートを自動生成し、定期レポート業務を効率化する方法を解説します。特に、自動化処理(定期実行、メール送信、ファイル操作など)との連携に焦点を当て、実用的なコード例とトラブルシューティングを紹介します。

EmbeddedChartBuilder.asAreaChartとは?

EmbeddedChartBuilder.asAreaChart は、GASでスプレッドシートや他のデータソースから取得したデータを基に、エリアチャートを作成するための関数です。エリアチャートは、データの経時的な変化や推移を視覚的に把握するのに適しています。複数のデータ系列を重ねて表示することで、各系列の貢献度や相互関係も分かりやすく表現できます。

自動化処理でのエリアチャート活用例

エリアチャートは、以下のような自動化処理で特に役立ちます。

  • 定期的な進捗レポート: プロジェクトの進捗状況を週次または月次で自動的にグラフ化し、関係者にメールで送信する。
  • 売上データの分析: 毎日の売上データをエリアチャートで表示し、売上の推移や傾向を把握する。
  • 在庫管理: 在庫数の変動をエリアチャートで可視化し、在庫切れや過剰在庫のリスクを早期に発見する。

GASでのエリアチャート実装例

以下に、GASでエリアチャートを作成し、定期的にメールで送信する例を示します。

例1: スプレッドシートのデータをエリアチャート化し、メール送信

// スプレッドシートのデータを取得し、エリアチャートを作成してメール送信する関数
function createAreaChartAndSendEmail() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "Sheet1";

// スプレッドシートを開き、シートを取得
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
const sheet = spreadsheet.getSheetByName(sheetName);

// データの範囲 (例: A1からB10)
const dataRange = sheet.getRange("A1:B10");
const data = dataRange.getValues();

// チャートを作成
const chart = sheet.newChart()
.setChartType(Charts.ChartType.AREA)
.addRange(dataRange)
.setPosition(5, 5, 0, 0) // チャートの位置
.setTitle("売上推移")
.build();

// シートにチャートを挿入
sheet.insertChart(chart);

// チャートを画像として取得
const chartImage = chart.getAs("image/png");

// メールを送信
MailApp.sendEmail({
to: "recipient@example.com",
subject: "売上推移レポート",
body: "添付のグラフをご覧ください。",
attachments: [chartImage],
name: "自動レポートシステム"
});

// 作成したチャートを削除 (任意)
sheet.removeChart(chart);
}

カスタマイズ方法:

  • spreadsheetIdsheetName を実際の値に置き換えてください。
  • dataRange をチャート化したいデータの範囲に合わせて変更してください。
  • to をメールの送信先アドレスに設定してください。
  • setTitle でチャートのタイトルを変更できます。

例2: 定期実行による自動レポート

上記の関数をトリガーで定期的に実行することで、自動レポートシステムを構築できます。

// トリガーで定期実行するための関数
function setupTrigger() {
// 既存のトリガーを削除
const triggers = ScriptApp.getProjectTriggers();
for (const trigger of triggers) {
ScriptApp.deleteTrigger(trigger);
}

// 毎日午前9時に実行するトリガーを作成
ScriptApp.newTrigger("createAreaChartAndSendEmail")
.timeBased()
.everyDays(1)
.atHour(9)
.nearMinute(0)
.create();
}

カスタマイズ方法:

  • everyDays(1) を変更することで、実行頻度を調整できます (例: everyWeeks(1) で毎週実行)。
  • atHour(9) を変更することで、実行時間を調整できます。

よくある問題とトラブルシューティング

  • チャートが表示されない: データ範囲が正しいか確認してください。また、データが数値として認識されているか確認してください。
  • メールが送信されない: スクリプトの実行権限が不足している可能性があります。GASのプロジェクト設定で権限を確認し、必要な権限を付与してください。
  • トリガーが動作しない: トリガーの設定が正しいか確認してください。また、GASのプロジェクト設定でタイムゾーンが正しく設定されているか確認してください。

カスタマイズ方法と応用例

  • 複数のデータ系列の表示: addRange を複数回呼び出すことで、複数のデータ系列をエリアチャートに表示できます。
  • チャートのスタイルのカスタマイズ: setOption メソッドを使用して、チャートの色、フォント、軸ラベルなどをカスタマイズできます。
  • エラー処理の追加: try...catch ブロックを使用して、エラーが発生した場合の処理を記述できます。

まとめ

EmbeddedChartBuilder.asAreaChart 関数と自動化処理を組み合わせることで、定期レポート業務を大幅に効率化できます。本記事で紹介したコード例を参考に、ぜひご自身の業務に合わせた自動レポートシステムを構築してみてください。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう