ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptで集計を自動化!毎日の集計レポート作成

【Googleスプレッドシート】Apps Scriptで集計を自動化!毎日の集計レポート作成
🛡️ 超解決

毎日の売上データやアクセスログの集計レポート作成に、手作業で時間を取られていませんか。Googleスプレッドシートには、こうした反復作業を自動化するApps Scriptという強力な機能があります。この記事では、Apps Scriptを使って簡単なスクリプトを書き、毎日自動でレポートを生成する方法を解説します。あなたの手間を大幅に減らすことができます。

【要点】Apps Scriptで集計レポートを自動化する全体像

  • GASエディタの起動とスクリプト作成: メニュー「拡張機能」からApps Scriptエディタを開き、関数名を指定して処理を記述します。
  • 日次集計関数の実装: シートから今日のデータを取得し、合計や平均を計算して別シートに書き出す関数を作ります。
  • トリガーで定期実行: 時間主導型トリガーを使い、毎日決まった時刻にスクリプトが自動実行されるよう設定します。

ADVERTISEMENT

Apps Scriptで自動化するメリットと基本構造

Apps ScriptはGoogleのサービスを自動操作できるJavaScriptベースのスクリプト環境です。スプレッドシートのデータ読み書き、メール送信、カレンダー連携など幅広い処理をコードで制御できます。日次レポート自動化の基本は、トリガーと呼ばれる実行スケジュールを設定し、スクリプトを定期起動させることです。処理の流れは「データ取得→加工計算→レポートシートに転記」の3ステップで構成できます。この仕組みを理解すれば、あらゆる集計作業を自動化に置き換えられます。

具体的な自動化の手順

手順1: Apps Scriptエディタを起動する

  1. スプレッドシートを開く
    集計元のデータが含まれるスプレッドシートを開きます。新規作成する場合はあらかじめ「データ」シートと「レポート」シートを用意しておきます。
  2. 拡張機能メニューから起動
    メニューバーから「拡張機能」→「Apps Script」をクリックします。新しいタブでコードエディタが開きます。
  3. 初期状態の確認
    エディタにはデフォルトでmyFunction()という空の関数が表示されます。プロジェクト名を変更して管理しやすくしましょう。

手順2: 集計用の関数を記述する

  1. 関数名と変数の定義
    以下のコードをエディタに貼り付けます。
    function dailyReport() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sourceSheet = ss.getSheetByName('データ');
      var dataRange = sourceSheet.getDataRange();
      var values = dataRange.getValues();
      
      // 今日の日付を取得
      var today = new Date();
      var todayStr = Utilities.formatDate(today, Session.getScriptTimeZone(), 'yyyy/MM/dd');
      
      // 今日の行をフィルタリング
      var filtered = values.filter(function(row) {
        return row[0] && row[0].toString() === todayStr;
      });
      
      // 2列目の数値の合計と平均を計算
      var sum = 0;
      filtered.forEach(function(row) { sum += Number(row[1]) || 0; });
      var avg = filtered.length ? sum / filtered.length : 0;
      
      // レポートシートに追記
      var reportSheet = ss.getSheetByName('レポート');
      var lastRow = reportSheet.getLastRow() + 1;
      reportSheet.getRange(lastRow, 1).setValue(todayStr);
      reportSheet.getRange(lastRow, 2).setValue(sum);
      reportSheet.getRange(lastRow, 3).setValue(avg);
    }
  2. コードの動作を確認する
    この関数は「データ」シートの1列目に日付、2列目に数値があることを前提としています。シート名や列番号は実際のデータに合わせて調整します。
  3. 保存する
    Ctrl+S(MacはCmd+S)で保存します。ファイル名は「dailyReport」などわかりやすい名前を付けます。

手順3: 関数をテスト実行する

  1. 実行ボタンを押す
    エディタ上部の▶ボタンをクリックし、プルダウンから「dailyReport」を選択します。
  2. 権限を承認する
    初回実行時には「このアプリは確認されていません」という警告が表示されます。「詳細」をクリックし、「<プロジェクト名>(安全ではないページ)に移動」を選んで許可します。表示される権限はすべて必要なものなので、内容を確認して「許可」をクリックします。
  3. 結果を確認する
    スプレッドシートに戻り、「レポート」シートが更新されているか確認します。正しくデータが書き込まれていれば成功です。エラーがある場合は、エディタの「実行状況」パネルでエラーメッセージを確認できます。

手順4: トリガーを設定して毎日自動実行する

  1. トリガー画面を開く
    エディタ左側の時計アイコン(トリガー)をクリックします。
  2. トリガーを追加する
    右下の「トリガーを追加」をクリックし、以下の設定をします。
    – 実行する関数: dailyReport
    – 実行するデプロイ: Head
    – イベントのソース: 時間主導型
    – 時間ベースのトリガーの種類: 日付ベースのタイマー
    – 時刻を選択: 毎日実行したい時間帯(例: 午前9時〜10時)
  3. 保存して完了
    「保存」をクリックしてトリガーを有効にします。翌日の指定時刻にスクリプトが自動実行されます。実行履歴はトリガー画面で確認できます。

自動化でよくあるトラブルと対策

データシートの列番号がずれる

スクリプト内で列番号をハードコードしていると、シートの列構成を変更したときに誤ったデータを計算してしまいます。列番号ではなく列名(ヘッダー)で特定するように改善するか、列が変わったらスクリプトを修正する必要があります。例えば、ヘッダー行を読み取って列のインデックスを動的に取得する方法が推奨されます。

トリガーが正しく動作しない

トリガーの設定後にスクリプトを編集すると、デプロイのバージョン管理が必要になる場合があります。トリガーを設定したら、スクリプトの変更後は再度トリガーを設定し直すか、デプロイを管理することを推奨します。また、実行ログ(表示→ログ)でエラーを確認できます。トリガーが実行されない場合は、トリガー画面で実行履歴を確認し、エラーがあれば修正します。

日付フォーマットの不一致

スプレッドシートの日付の書式とスクリプト内の日付文字列が一致しないと、フィルタが正しく動作しません。シートの日付書式を確認し、Utilities.formatDateで同じフォーマットに揃えてください。シート側の日付が文字列として保存されている場合もあるので、データの実態に合わせてコードを修正します。

実行時間制限に注意する

Apps Scriptには1回の実行につき6分の制限があります。大量のデータを処理する場合は、処理を分割するか、スプレッドシートの関数を併用することで制限内に収める必要があります。現在のデータ量で問題がないか、テスト実行時に時間を計測するとよいでしょう。

ADVERTISEMENT

手動集計とスクリプト自動化の比較

項目 手動集計 Apps Script自動化
所要時間 毎日5〜10分 初期設定のみ、以降0分
ミス発生率 高い(コピペミスなど) ほぼゼロ
柔軟性 その場で変更可 コード修正が必要
継続コスト 毎日手間 無料(Googleアカウントのみ)

まとめ

この記事では、Apps Scriptを使って毎日の集計レポート作成を自動化する方法を解説しました。スクリプトを一度記述してトリガーを設定すれば、手作業から解放されます。初めは簡単な合計計算から始め、徐々に集計項目を増やしたり、チャートの更新やメール送信も組み込めます。ぜひ、あなたの業務に合わせてカスタマイズしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。