【GASで自動化】Googleスプレッドシートの定型レポート作成を効率化!日報・週報の手間をゼロにする方法

自動化事例

「毎日の売上報告、毎週の進捗確認…」
同じような数字を転記するだけのレポート作成に、貴重な時間を奪われていませんか?

手作業でのレポート作成は、時間がかかるだけでなく、コピー&ペーストのミスや計算間違いといったヒューマンエラーの温床にもなりがちです。また、作成方法が担当者しか分からない「属人化」に陥ってしまうケースも少なくありません。

もし、これらの定型レポートが ”何もしなくても、毎朝グラフ付きで自動作成され、関係者にメールで届く” としたら、どうでしょうか。

この記事では、多くの企業で利用されているGoogleスプレッドシートと、その機能を拡張するGAS(Google Apps Script)を使って、日々のレポート作成を自動化する具体的な手順を解説します。

プログラミングの経験がない方でも、コピー&ペーストで実践できるように説明しますので、ぜひ最後までご覧ください。

なぜ今、レポート作成の自動化が必要なのか?

そもそも、なぜ手作業のレポート作成が問題なのでしょうか。改めて整理してみましょう。

  • 時間の浪費: 毎日30分かけていたレポート作成は、1ヶ月(20営業日)で10時間、年間では120時間にも及びます。この時間を他の業務に充てられれば、大きな成果を生み出せる可能性があります。
  • ミスの発生: 手作業である以上、入力ミスや計算式の参照ズレなどのヒューマンエラーを完全になくすことは困難です。誤った数値に基づいた意思決定は、ビジネスに深刻な影響を与えかねません。
  • 属人化のリスク: 特定の担当者しかレポートの作成方法を知らない場合、その担当者が不在の際に業務が滞ってしまいます。作成プロセスがブラックボックス化し、改善も進みません。

これらの課題は、レポート作成を「自動化」することで一挙に解決できます。自動化によって得られるメリットは計り知れません。

  • 業務効率化による生産性向上: 担当者は単純作業から解放され、分析や改善提案といった付加価値の高い業務に集中できます。
  • ヒューマンエラーの撲滅: 機械的に処理されるため、人為的なミスがなくなり、レポートの正確性が飛躍的に向上します。
  • 迅速な情報共有: 必要な情報を、決まった時間に、決まったフォーマットで関係者に届けることができ、組織全体の意思決定をスピードアップさせます。

では、具体的にどのように自動化を進めていくのでしょうか。

レポート自動化の全体像

今回は、GoogleスプレッドシートとGAS(Google Apps Scriptという、Googleアカウントさえあれば誰でも無料で使えるツールを活用します。

全体の流れは非常にシンプルです。

  1. データの入力: 日々の受注記録などをスプレッドシートに蓄積します。
  2. データの集計と可視化: 入力されたデータを関数で集計し、比較分析やグラフ作成を自動で行います。
  3. GASの実行: あらかじめ設定した時刻になると、GAS(プログラム)が自動で動き出します。
  4. メールの送信: GASが集計結果とグラフをメール本文に埋め込み、自動で送信します。

一度この仕組みを構築してしまえば、あとは元となるデータを入力していくだけで、日々のレポート作成業務が完了します。

【実践】グラフ付き売上レポートを自動生成してみよう

ここからは、具体的な売上レポートを例に、自動化の仕組みを構築する手順を解説していきます。

ステップ1: データの準備と「比較・分析」できる集計シートの作成

まずは、元になるデータと、それを集計・分析するシートを用意します。

1. 元データシートの準備

日々の取引データを記録するためのシートを作成します。ここでは「受注台帳」というシート名で、以下のような表を用意しました。

2. 集計・分析用シートの作成

次に、この元データを集計し、さらに前日比の分析まで行うシートを「日次レポート」という名前で作成します。

① 日別・カテゴリ別売上の集計

集計にはQUERY(クエリ)関数を使用します。基本的な構文や使い方は、こちらの記事で詳しく解説しています。

「日次レポート」シートのD1セルに、以下の関数を入力してください。

=QUERY(
  '受注台帳'!A:E,
  "SELECT B, SUM(E) GROUP BY B PIVOT D",
  1
)

② 前日比サマリーの作成

次に、メールに記載するサマリー(要約)部分を作成します。「日次レポート」シートのA2セルから以下のように入力します。

A列B列
2本日合計=SUM(E2:I2)
3昨日合計=SUM(E3:I3)
4前日比=B2-B3
5前日比率=IFERROR(B4/B3, 0)

B5セルのIFERRORは、昨日の売上が0円だった場合にエラーが出るのを防ぐためのものです。また、B5セルの表示形式を「書式」>「数字」>「パーセント」に変更しておきましょう。

③ グラフ用の日別合計列を追加する

後のステップでグラフを作成するために、日別の合計金額を計算する列を追加します。
QUERY関数の集計表がI列まであると仮定し、J列に合計を計算します。

  • J1セルに日別合計という見出しを入力します。
  • J2セルに、以下の関数を入力します。
=ARRAYFORMULA(
  IF(D2:D="", "",
  E2:E+F2:F+G2:G+H2:H+I2:I
  )
)

これで、レポートの元となる数値の準備ができました。

ステップ2: レポート用のグラフを作成する

次に、数値だけでは分かりづらい「売上の推移」を視覚的に表現するグラフを作成します。

  1. 「日次レポート」シートで、QUERY関数で出力された日付の列(D列)と、合計金額を計算する列(J列)を選択します。
  2. メニューの「挿入」>「グラフ」をクリックします。
  3. グラフエディタが表示されたら、「グラフの種類」で「折れ線グラフ」を選択します。
  4. グラフのタイトルを「日別売上推移」などに変更し、見やすい位置に配置します。

このグラフを、GASを使って画像としてメールに埋め込みます。

ステップ3: グラフ付きレポートメールを作成・送信するGASを書く

いよいよ、これまでの準備を繋ぎ合わせるGASを記述します。
GASの基本的な使い方やスクリプトエディタの開き方については、こちらの記事をご覧ください。

スクリプトエディタを開いたら、元々書かれているコードをすべて消し、以下のコードを貼り付けてください。

// ===============================================
// 設定項目:ご自身の環境に合わせて変更してください
// ===============================================

// 送信するメールの宛先(,区切りで複数指定可)
const TO_EMAIL = 'report@example.com';

// メールの件名
const MAIL_SUBJECT = '【日次】売上レポート';

// レポートが記載されているシート名
const REPORT_SHEET_NAME = '日次レポート';

// サマリーが記載されているセルの範囲
const SUMMARY_RANGE = 'B2:B5';

// ===============================================
// メイン処理:ここから下は変更不要です
// ===============================================

/**
 * グラフ付きのレポートメールを送信する関数
 */
function sendReportWithChart() {
  try {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheetByName(REPORT_SHEET_NAME);

    if (!sheet) {
      console.error('シートが見つかりません: ' + REPORT_SHEET_NAME);
      return;
    }

    // サマリーデータを取得
    const summaryValues = sheet.getRange(SUMMARY_RANGE).getDisplayValues();
    const todaysSales = summaryValues[0][0];
    const yesterdaysSales = summaryValues[1][0];
    const change = summaryValues[2][0];
    const changePercent = summaryValues[3][0];

    // シートの最初のグラフを画像として取得
    const chart = sheet.getCharts()[0];
    if (!chart) {
      console.error('グラフが見つかりません。');
      return;
    }
    const chartBlob = chart.getAs('image/png').setName('salesChart');
    
    // 今日の日付をYYYY/MM/DD形式で取得
    const today = new Date();
    const formattedDate = Utilities.formatDate(today, 'Asia/Tokyo', 'yyyy/MM/dd');

    // HTML形式のメール本文を作成
    const htmlBody = `
      <html>
        <body style="font-family: sans-serif;">
          <p>${formattedDate} の売上レポートをお送りします。</p>
          <hr>
          <h2 style="color: #444;">サマリー</h2>
          <table style="border-collapse: collapse;">
            <tr><td style="padding: 5px; background-color: #f2f2f2; border: 1px solid #ddd;">本日合計</td><td style="padding: 5px; border: 1px solid #ddd; text-align: right;"><b>${todaysSales} 円</b></td></tr>
            <tr><td style="padding: 5px; background-color: #f2f2f2; border: 1px solid #ddd;">前日比</td><td style="padding: 5px; border: 1px solid #ddd; text-align: right;">${change} 円 (${changePercent})</td></tr>
          </table>
          <h2 style="color: #444;">売上推移グラフ</h2>
          <p><img src="cid:salesChart"></p>
          <hr>
          <p>詳細は以下のスプレッドシートをご確認ください。<br>
            <a href="${ss.getUrl()}">スプレッドシートを開く</a>
          </p>
        </body>
      </html>
    `;

    // メールを送信
    MailApp.sendEmail({
      to: TO_EMAIL,
      subject: MAIL_SUBJECT + '(' + formattedDate + ')',
      htmlBody: htmlBody,
      inlineImages: {
        salesChart: chartBlob
      }
    });

    console.log('グラフ付きレポートメールを送信しました。');

  } catch (e) {
    console.error('エラーが発生しました: ' + e.toString());
  }
}

ステップ4: 決まった時間に自動で実行する設定(トリガー)

最後に、作成したGASを毎日決まった時間に自動で実行するための「トリガー」を設定します。
詳しい設定方法は、こちらの記事を参考にしてください。

設定の際は、「実行する関数」として sendReportWithChart を選択してください。

これで全ての設定が完了です!設定した時間になると、スプレッドシートの集計結果からサマリーとグラフ付きのレポートメールが自動で送信されるようになります。

まとめ

今回は、GoogleスプレッドシートとGASを使って、定型レポートの作成と配信を自動化する方法を、より実践的な「比較分析」と「グラフの可視化」まで含めて解説しました。

  1. QUERY関数で集計表を作成し、さらに前日比を計算して分析要素を追加
  2. シート上に売上推移のグラフを自動描画させる
  3. GASでサマリーデータとグラフ画像をHTMLメールに埋め込んで送信
  4. トリガー機能で、毎日決まった時間にプログラムを自動実行

この仕組みを一度構築するだけで、あなたは日々の面倒なレポート作成業務から永久に解放されます。創出された時間で、データの分析や次のアクションの検討など、本来あなたがやるべき、より付加価値の高い仕事に集中できるようになるでしょう。

「プログラミングは難しそう…」と感じていた方も、まずはこの記事を真似て、身近な日報作成から自動化を試してみてはいかがでしょうか。その小さな一歩が、あなたの仕事のスタイルを大きく変えるきっかけになるはずです。

※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。