ADVERTISEMENT

【Googleスプレッドシート】特定セルが変更されたら通知!Apps Scriptとの組合せ

【Googleスプレッドシート】特定セルが変更されたら通知!Apps Scriptとの組合せ
🛡️ 超解決

Googleスプレッドシートで特定のセルが変更されたときに、自動でメール通知を受け取りたいと考えたことはありませんか。手動でシートを確認するのは手間がかかりますし、更新に気づかないこともあります。この記事では、Apps Scriptのトリガー機能を使ってセル変更を検知し、メールで通知する方法を詳しく解説します。これで重要なセルの変更を逃さずに済むようになります。

【要点】Apps ScriptのonEditトリガーを設定する手順

  • onEdit(e)関数の記述: スプレッドシートの編集を検知するスクリプトを作成します。変更されたセル範囲を判定する条件分岐を含めます。
  • トリガーの設定: Apps Scriptエディタから「編集時」トリガーを追加します。これによりセル変更時に自動実行されます。
  • メール送信の実装: MailApp.sendEmailメソッドで通知メールを送信します。件名や本文に変更内容を含められます。

ADVERTISEMENT

Apps Scriptがセル変更を検知する仕組み

Google Apps Scriptには、スプレッドシートの編集をきっかけに自動実行されるトリガー機能があります。特に「編集時」トリガーは、セルの値が変更されるたびに関数が呼び出される仕組みです。トリガーで実行される関数(通常はonEdit(e))には引数eが渡され、その中に編集されたセルの情報(Rangeオブジェクト、変更前の値oldValue、新しい値valueなど)が格納されます。この情報をもとに条件分岐することで、特定のセルが変更されたときだけ処理を実行できます。例えば、特定のシートの特定の列を監視して、変更があったらメール送信するといった使い方が可能です。

特定セル変更時にメール通知を設定する手順

ここでは、セルA1が変更されたときに通知メールを送る例を紹介します。手順は大きく3つのステップに分かれます。

1. スクリプトエディタを開く

  1. スプレッドシートを開く
    監視したいスプレッドシートをGoogleドライブから開きます。
  2. 拡張機能メニューからApps Scriptを選択
    メニューバーの「拡張機能」をクリックし、表示されたドロップダウンから「Apps Script」を選びます。別タブでスクリプトエディタが開きます。

2. スクリプトコードを記述する

  1. デフォルトのコードを削除する
    エディタに表示されている「function myFunction() { … }」をすべて削除します。
  2. 以下のコードを貼り付ける
    セルA1が変更されたときにメールを送信するコードです。
    function onEdit(e) {
      // 編集されたセル範囲を取得します
      var range = e.range;
      // シート名を取得します
      var sheetName = range.getSheet().getName();
      // 編集されたセルのアドレスを取得します
      var cellAddress = range.getA1Notation();
      // 新しい値を取得します
      var newValue = range.getValue();
      // 以前の値を取得します(編集前の値)
      var oldValue = e.oldValue;
      
      // 監視したいセルを指定します(例:A1)
      if (cellAddress === 'A1' && sheetName === 'シート1') {
        // メールの宛先を設定します
        var recipient = 'your-email@example.com';
        // 件名を設定します
        var subject = 'セルA1が変更されました';
        // 本文を設定します
        var body = 'セルA1が変更されました。\n'
          + '変更前の値: ' + (oldValue || '(空)') + '\n'
          + '変更後の値: ' + newValue;
        // メールを送信します
        MailApp.sendEmail(recipient, subject, body);
      }
    }
  3. スクリプトを保存する
    Ctrl+S(Windows)またはCmd+S(Mac)を押すか、フロッピーディスクアイコンをクリックして保存します。初回はプロジェクト名の入力を求められますので、任意の名前を付けます。

3. トリガーを設定する

  1. トリガー設定画面を開く
    スクリプトエディタの左側メニューにある「トリガー」アイコン(時計の形)をクリックします。
  2. 新しいトリガーを追加する
    右下の「+ トリガーを追加」ボタンをクリックします。
  3. トリガーの詳細を設定する
    表示されるダイアログで、以下のように選択します。
     実行する関数: onEdit
     デプロイ: ヘッド
     イベントのソース: スプレッドシートから
     イベントの種類: 編集時
     エラー通知: 必要に応じて設定(毎日受け取る、など)
    設定後、「保存」をクリックします。
  4. 権限の承認を行う
    初回のみ、スクリプトがメール送信などの権限を要求するダイアログが表示されます。内容を確認し、「許可」をクリックします。自分のGoogleアカウントで承認します。

4. 動作をテストする

  1. スプレッドシートに戻る
    シート1のセルA1に何か値を入力してEnterキーを押します。
  2. メールを確認する
    設定した宛先(your-email@example.com)に通知メールが届くことを確認します。件名は「セルA1が変更されました」、本文には変更前と変更後の値が記載されています。

設定時の注意点とよくあるトラブル

トリガーが実行されない場合

トリガーの設定が正しく行われているか確認します。特に「イベントの種類」が「編集時」になっていることを確認してください。また、スクリプトに誤りがあると実行されません。Apps Scriptエディタで「実行」ボタンを押してデバッグすることも可能です。実行ログ(表示 > ログ)でエラーメッセージを確認できます。

メールが送信されない場合

MailApp.sendEmailの引数が正しいか確認します。特に宛先メールアドレスが空文字列や不正な形式だとエラーになります。また、Google Apps Scriptのメール送信には1日あたりの送信上限があります(コンシューマーアカウントで100通/日)。上限に達していないか確認してください。エラーログも参照しましょう。

条件分岐が正しく動作しない場合

コード内のcellAddressやsheetNameの比較が大文字小文字や余分な空白の影響を受けることがあります。値をそのまま比較する前に、trim()やtoUpperCase()を使って正規化する方法もあります。また、編集されたセルが複数範囲(コピーペーストなど)の場合はe.rangeが複数セルを指すことがあります。その場合は条件を「range.getA1Notation()が特定のセルを含む」ように変更する必要があります。

ADVERTISEMENT

メール通知とSlack通知の比較

通知方法 メリット デメリット
メール(MailApp) 設定が簡単で誰でも使える。添付ファイルも可能。 送信制限があり、大量通知には不向き。
Slack(Webhook) リアルタイム性が高く、チームで共有しやすい。 外部APIの設定が必要で、権限やURL管理がやや複雑。

用途に応じて通知方法を選ぶと良いでしょう。メールは個人向け、Slackはチームでの即時共有に向いています。

まとめ

この記事では、Apps ScriptのonEditトリガーを使って特定セルの変更を検知し、メール通知する方法を解説しました。スクリプトの記述からトリガー設定、テストまでの一連の流れを理解できたはずです。次は、監視するセルを複数に増やしたり、Slackへの通知に挑戦してみるのも良いでしょう。MailAppやUrlFetchAppを使えば、さまざまなサービスと連携した自動通知システムを構築できます。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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