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

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

本記事では、Google Apps Script(GAS)のEmbeddedChartBuilder.setChartType関数を利用して、定期的なレポート作成を自動化する方法を解説します。特に、メール送信とファイル操作を組み合わせ、業務効率を大幅に向上させるテクニックを、具体的なコード例を交えてご紹介します。

EmbeddedChartBuilder.setChartTypeとは?

EmbeddedChartBuilder.setChartTypeは、GASでグラフを作成する際に、グラフの種類(棒グラフ、折れ線グラフ、円グラフなど)を指定するための関数です。この関数を使うことで、データの種類や目的に応じた最適なグラフをプログラムで生成できます。

例えば、以下のように使用します。

function createChart() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const range = sheet.getDataRange();
const chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(range)
.setPosition(5, 5, 0, 0)
.build();
sheet.insertChart(chart);
}

この例では、スプレッドシートのデータに基づいて棒グラフを作成し、シートに挿入しています。

利用シチュエーション:定期レポートの自動化

多くの企業や組織では、売上データやアクセスログなどのデータを定期的に集計し、レポートを作成する必要があります。この作業は時間がかかり、人的ミスも発生しやすいため、自動化することが望ましいです。GASとEmbeddedChartBuilder.setChartTypeを組み合わせることで、この作業を効率化できます。

実装例1:毎朝、前日の売上データをグラフ化したレポートをメールで送信

この例では、前日の売上データをスプレッドシートから取得し、棒グラフを作成して、指定されたメールアドレスに送信します。

function sendDailySalesReport() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "SalesData";
// レポートを送信するメールアドレス
const recipient = "your_email@example.com";

// スプレッドシートを開き、データを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
const data = sheet.getDataRange().getValues();

// グラフを作成
const chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(sheet.getDataRange())
.setPosition(5, 5, 0, 0)
.build();

// グラフを画像として取得
const chartImage = chart.getAs("image/png");

// メールを送信
MailApp.sendEmail({
to: recipient,
subject: "【日次】売上レポート",
htmlBody: "

おはようございます。
昨日の売上レポートをお届けします。

",
inlineImages: {
"chart": chartImage
}
});
}

カスタマイズ方法:

  • spreadsheetIdsheetNameを実際の値に置き換えてください。
  • recipientをレポートの送信先メールアドレスに設定してください。
  • Charts.ChartType.COLUMNを他のグラフの種類(Charts.ChartType.LINEなど)に変更することで、グラフの種類を変更できます。
  • メールの件名や本文を必要に応じて変更してください。

実装例2:特定の条件を満たすデータをグラフ化し、Google Driveに保存

この例では、スプレッドシートから特定の条件を満たすデータを抽出し、円グラフを作成して、Google Driveに保存します。

function createAndSaveChart() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "DataSheet";
// グラフを保存するフォルダのID
const folderId = "YOUR_FOLDER_ID";
// グラフのタイトル
const chartTitle = "条件を満たすデータの割合";

// スプレッドシートを開き、データを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
const data = sheet.getDataRange().getValues();

// 条件を満たすデータの数をカウント
let count = 0;
for (let i = 1; i < data.length; i++) { // ヘッダー行をスキップ
if (data[i][2] === "条件") { // 3列目の値が「条件」と一致する場合
count++;
}
}

// グラフのデータを作成
const chartData = [
["条件", "割合"],
["条件を満たす", count],
["条件を満たさない", data.length - 1 - count] // ヘッダー行を引く
];

// グラフを作成
const chart = Charts.newChart()
.setChartType(Charts.ChartType.PIE)
.setDataViewDefinition(Charts.newDataViewDefinition()
.setColumns([0, 1]))
.setOption("title", chartTitle)
.setTitle(chartTitle)
.addRange(sheet.getRange(1,1,chartData.length, chartData[0].length))
.setPosition(5, 5, 0, 0)
.build();


// グラフを画像として保存
const chartImage = chart.getAs("image/png");
const folder = DriveApp.getFolderById(folderId);
const file = folder.createFile(chartImage).setName(chartTitle + ".png");

}

カスタマイズ方法:

  • spreadsheetId, sheetName, folderIdを実際の値に置き換えてください。
  • 条件の判定ロジック (data[i][2] === "条件") を、実際の条件に合わせて変更してください。
  • Charts.ChartType.PIEを他のグラフの種類に変更することで、グラフの種類を変更できます。
  • chartTitleを適切なタイトルに変更してください。

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

  • グラフが表示されない:スプレッドシートのIDやシート名が正しいか確認してください。また、グラフのデータ範囲が適切に設定されているか確認してください。
  • メールが送信されない:メールアドレスが正しいか確認してください。また、GASの実行権限が付与されているか確認してください。
  • グラフの種類が意図したものではない:Charts.ChartTypeの設定が正しいか確認してください。
  • データ範囲がずれる:getDataRange()で取得する範囲が想定通りになっているか確認する。getDataRange()はデータが入っている最終行までしか取得しないため、空白行があるとそこで止まってしまう。

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

  • 複数のグラフを組み合わせてレポートを作成:複数のグラフを作成し、それらを1つのHTMLメールにまとめて送信することができます。
  • グラフの設定を細かくカスタマイズ:setOptionメソッドを使用することで、グラフの色や軸ラベルなどの設定を細かくカスタマイズすることができます。
  • トリガーを設定して定期実行:GASのトリガー機能を使用することで、スクリプトを定期的に実行することができます。

まとめ

EmbeddedChartBuilder.setChartTypeとGASを組み合わせることで、定期レポート作成を自動化し、業務効率を大幅に向上させることができます。本記事で紹介したコード例やトラブルシューティングを参考に、ぜひ自動化に挑戦してみてください。

PR

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

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