【Googleスプレッドシート】Apps Scriptで時刻トリガーを設定!毎週月曜の自動レポート送信

【Googleスプレッドシート】Apps Scriptで時刻トリガーを設定!毎週月曜の自動レポート送信
🛡️ 超解決

毎週月曜日の朝、手動でレポートを送信する作業に追われていませんか。GoogleスプレッドシートのApps Scriptを使えば、この繰り返し作業を完全に自動化できます。この記事では、時刻主導型トリガーを設定して、毎週月曜に自動でレポートをメール送信する具体的な手順を解説します。スクリプトの書き方からトリガーの登録、テスト方法までを順を追って説明します。

【要点】Apps Script時刻トリガーによる毎週月曜の自動レポート送信

  • スクリプトエディタで関数を作成: メール送信用の関数を書き、レポートデータをシートから取得して送信します。
  • トリガーを「週」単位で設定: 毎週月曜の指定時刻に実行するトリガーを、Apps Scriptのエディタまたはスプレッドシートのメニューから設定します。
  • テストと承認を忘れずに: 初回実行時に権限承認が必要です。また、トリガーが正しく動作するかテスト実行で確認します。

ADVERTISEMENT

Apps Scriptトリガーの仕組み

Apps Scriptには、時間やイベントをきっかけに自動実行される「トリガー」機能があります。トリガーには、指定した日時に実行する「時刻主導型トリガー」と、シートの編集やフォーム送信時に実行する「イベント主導型トリガー」の2種類があります。今回使用するのは時刻主導型のトリガーで、週単位や日単位、時間単位でのスケジュール設定が可能です。トリガーはスクリプトプロジェクトに紐づけられ、一度設定すればGoogleのサーバー上で自動的に実行されます。

自動レポート送信の設定手順

ここからは、実際にスクリプトを作成し、トリガーを設定する手順を説明します。まず、レポートの内容をスプレッドシートに用意しておいてください。ここでは、シート名「レポート」のA1:E10の範囲をメール本文として送信する例を示します。

スクリプトの作成

  1. スクリプトエディタを開く
    スプレッドシートのメニュー「拡張機能」→「Apps Script」をクリックしてエディタを開きます。
  2. 関数を記述する
    以下のコードをエディタに貼り付けます。
    function sendReport() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('レポート');
    var data = sheet.getRange('A1:E10').getValues();
    var body = '';
    for (var i = 0; i < data.length; i++) {
    body += data[i].join('\t') + '\n';
    }
    var recipient = Session.getActiveUser().getEmail();
    var subject = '週次レポート - ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy/MM/dd');
    MailApp.sendEmail(recipient, subject, body);
    }

    このコードは「レポート」シートのデータをタブ区切りでメール本文にし、自分自身に送信します。必要に応じて相手先や件名を変更してください。
  3. 関数を保存する
    Ctrl+S(MacではCmd+S)で保存し、関数名が「sendReport」であることを確認します。

トリガーの設定

  1. トリガーページを開く
    スクリプトエディタの左側の時計アイコン「トリガー」をクリックします。
  2. トリガーを追加する
    右下の「トリガーを追加」ボタンをクリックします。
  3. 実行する関数を選択
    「実行する関数」で「sendReport」を選択します。
  4. 時間間隔を選択
    「時間の間隔」で「週タイマー」を選びます。次に「曜日」で「月曜日」、「時刻」で希望の時刻(例:午前9時)を選択します。必要に応じてタイムゾーンを確認します。
  5. 通知設定
    エラーの通知を受け取るかどうかを選択します。「今すぐ通知」にしておくと問題発生時にメールが届きます。
  6. 保存する
    「保存」をクリックします。初回は承認ダイアログが表示されるので、内容を確認して「許可」をクリックします。

テスト実行と確認

  1. 手動で関数をテストする
    スクリプトエディタで「sendReport」関数を選択し、上部の「実行」ボタンをクリックします。初回は権限承認が必要です。承認後、メールが届くことを確認します。
  2. トリガーの実行ログを確認する
    スクリプトエディタの左側「実行数」から実行履歴を確認できます。エラーがあればログを参照して修正します。
  3. 実際の曜日を待つ
    設定した月曜日になれば自動実行されます。念のため、次の月曜日にメールが届くのを確認しましょう。

トリガー設定でよくある注意点

トリガーの実行に必要な権限を承認していない

スクリプトがメール送信やスプレッドシートへのアクセスを行う場合、初回実行時に権限承認が求められます。承認をスキップするとトリガーはエラーになります。必ず最初のテスト実行で承認を行い、トリガーにも権限が紐づくようにしましょう。

トリガーの時間間隔を間違える

時刻主導型トリガーでは「時間単位」「日単位」「週単位」「月単位」が選べます。週単位を選んだ後、曜日を指定しないと毎日実行になってしまいます。また、時間は選択肢から選ぶ必要があり、任意の分単位は指定できません。たとえば午前9時ちょうどに実行したい場合は、9時~10時の間のいずれかになります。厳密な時刻が必要な場合は、数分の誤差が生じることを理解しておいてください。

トリガーの上限数に注意

1つのスクリプトプロジェクトに設定できるトリガーは、合計で20個までです。また、1時間あたりの総実行時間にも制限があります。大量のトリガーを設定する場合は、Googleの利用制限を確認してください。

エラーハンドリングを実装する

メール送信が失敗した場合、トリガーはエラーをログに残すだけです。運用時には、try…catch文を使ってエラーを検出し、別のメールで通知するなどの対策を推奨します。たとえば、try{...}catch(e){MailApp.sendEmail(adminEmail,'エラー通知', e.message);} のように実装します。

ADVERTISEMENT

トリガーの種類と用途の比較

トリガーの種類 設定の特徴 主な用途例
時刻主導型(週単位) 曜日と時間帯を指定。毎週同じ曜日の指定時間帯に実行 毎週月曜のレポート送信、毎週金曜の集計更新
時刻主導型(日単位) 時間帯を指定。毎日その時間帯に実行 日次のデータバックアップ、日次売上レポート
時刻主導型(月単位) 日付と時間帯を指定。毎月指定日に実行 月次締め処理、請求書発行
イベント主導型 シートの編集、フォーム送信、シートの変更などをトリガーに即時実行 データ入力時の自動計算、フォーム回答のメール通知

まとめ

この記事では、Apps Scriptの時刻主導型トリガーを使って毎週月曜に自動レポートを送信する手順を解説しました。スクリプトの作成からトリガーの設定、テスト実行までの流れを押さえれば、繰り返しの作業から解放されます。応用として、トリガーに条件分岐を加えて、特定の条件が整ったときだけ送信するといった高度な自動化も可能です。自分の業務に合わせて、曜日や時刻、送信先をカスタマイズしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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