GAS×EmbeddedChartBuilder.asBarChartで日次売上報告を自動化!グラフ付きメール送信

GASで日次売上報告を自動化!EmbeddedChartBuilder.asBarChartでグラフ付きメール送信

日々の売上報告、集計してグラフを作成し、メールで送信するのは意外と手間がかかりますよね。この記事では、Google Apps Script(GAS)のEmbeddedChartBuilder.asBarChartを使って、日次売上報告を自動化する方法を解説します。特に、定期実行、メール送信、ファイル操作といった自動化処理と組み合わせることで、業務効率を大幅に向上させることができます。

EmbeddedChartBuilder.asBarChartとは?

EmbeddedChartBuilder.asBarChartは、GASで棒グラフを作成するためのクラスです。スプレッドシートのデータを元に、簡単にグラフを作成し、ドキュメントやメールに埋め込むことができます。

基本的な使い方

まず、スプレッドシートからデータ範囲を取得し、それを使ってEmbeddedChartBuilderを作成します。その後、グラフの種類をasBarChart()で指定し、各種設定を行います。

function createBarChart() {
// スプレッドシートを開く
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();

// データ範囲
const range = sheet.getDataRange();

// グラフビルダーを作成
const chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(range)
.setPosition(5, 5, 0, 0)
.build();

// シートにグラフを挿入
sheet.insertChart(chart);
}

日次売上報告の自動化

ここでは、日次売上報告を自動化する具体的な手順とコード例を紹介します。

1. スプレッドシートの準備

まず、売上データを記録するスプレッドシートを用意します。日付、商品名、売上金額などの列を作成します。

2. GASコードの作成

以下のGASコードは、スプレッドシートから売上データを取得し、棒グラフを作成してメールで送信するものです。

function dailySalesReport() {
// スプレッドシートIDを設定
const spreadsheetId = "YOUR_SPREADSHEET_ID";

// シート名を設定
const sheetName = "売上データ";

// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);

// データ範囲を取得
const lastRow = sheet.getLastRow();
const lastColumn = sheet.getLastColumn();
const range = sheet.getRange(1, 1, lastRow, lastColumn);
const data = range.getValues();

// グラフを作成
const chart = ss.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(range)
.setPosition(5, 5, 0, 0)
.setOption("title", "日次売上報告")
.build();

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

// メールを送信
const recipient = "YOUR_EMAIL_ADDRESS";
const subject = "【日次売上報告】" + Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");
const body = "本日の売上報告です。詳細は添付のグラフをご覧ください。";
const options = {
attachments: [chartImage],
inlineImages: {} // インライン画像を使用しない場合でも空のオブジェクトが必要
};

MailApp.sendEmail(recipient, subject, body, options);
}

重要なポイント:

  • YOUR_SPREADSHEET_IDYOUR_EMAIL_ADDRESSをあなたの情報に置き換えてください。
  • Utilities.formatDateを使って、日付を適切な形式にフォーマットしています。
  • MailApp.sendEmailoptionsで、グラフを添付ファイルとして送信しています。

3. トリガーの設定

GASのトリガーを設定して、この関数を毎日自動で実行するようにします。「トリガー」アイコンをクリックし、「トリガーを追加」を選択。dailySalesReport関数を日次で実行するように設定します。

実装例とカスタマイズ

上記の例を元に、さらにカスタマイズしてみましょう。

売上目標との比較

スプレッドシートに売上目標の列を追加し、グラフに目標ラインを追加することで、達成状況を視覚的に把握できます。

// グラフに目標ラインを追加
chart.setOption("series", {0: {targetAxisIndex: 0}, 1: {targetAxisIndex: 1}})
.setOption("vAxes", {
0: {title: "売上金額"},
1: {title: "目標金額", viewWindow: {min: 0, max: 100000}} // 目標金額の範囲を設定
});

特定の商品の売上分析

特定の商品の売上だけを抽出してグラフを作成することも可能です。filterメソッドを使って、データを絞り込みます。

// 特定の商品のデータを抽出
const specificProductData = data.filter(row => row[1] === "商品A");
// 抽出したデータでグラフを作成

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

  • メールが送信されない:GASの権限設定を確認してください。特に、スプレッドシートへのアクセスとメール送信の権限が必要です。
  • グラフが正しく表示されない:データ範囲が正しいか、グラフの種類が適切かを確認してください。
  • トリガーが作動しない:トリガーの設定が正しいか、タイムゾーンが適切かを確認してください。

まとめ

GASのEmbeddedChartBuilder.asBarChartと自動化処理を組み合わせることで、日次売上報告を効率化することができます。この記事で紹介したコード例を参考に、ぜひあなたの業務に合わせてカスタマイズしてみてください。日々のルーチンワークから解放され、より戦略的な業務に集中できるようになるでしょう。