Googleスプレッドシートで自動通知メールを設定

Googleスプレッドシートからメールを送信するには、Google Apps Script(以下GAS)を使用する必要があります。これまでに一度もGASを作成したことがなくても、メールの自動送信は非常に簡単です。

しかし、step-by-stepで書いていくので、少々長くなります。。
因みに私はマクロ初級者くらいのコードしか書けませんが、完全初心者でもできます。

本記事では、Googleスプレッドシートのセルの値を基準に、任意の電子メールアドレスにアラートメールを自動的に送信できます。用途は色々あると思いますが、下記にいくつか例を載せます。
■ 月末に1カ月のまとめを通知
■ 日次収益が特定のレベルを下回った場合(今回はこれを例とします)
■ プロジェクト追跡スプレッドシートで従業員がクライアントに長時間請求したと報告した場合
※ スプレッドシートの更新を手動で監視する時間を節約できます。

ステップ1:Googleスプレッドシートを使用してメールを送信する

1.GmailのメールアドレスをGoogleスプレッドシートに記入

画像1

2.スクリプトを作成します
2.1 [ツール]をクリックし、[スクリプトエディタ]をクリックします。

画像2

2.2 myFunction()というデフォルトの関数を含むスクリプトウィンドウが表示されます。これをSendEmail()に変更し、次のコードを貼り付けます。

  // Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1").getRange("B2");
var emailAddress = emailRange.getValue();
// Send Alert Email.
var message = 'This is your Alert email!'; // Second column
var subject = 'Your Google Spreadsheet Alert';
MailApp.sendEmail(emailAddress, subject, message);

画像3

2.3 [プロジェクトを保存]をクリックし、[実行]をクリック
▼GASがGmailにメールの送信命令するためには、GASはGmailアカウントのアクセス権限が必要になります。したがって、スクリプトを初めて実行する時、次のようなアラートが表示される場合があります。

画像4

▼このアラート画面は、公式スクリプトとして登録されていない「カスタムGoogleスクリプト」を作成しているためです。これを行う必要があるのは1回だけです。画像5

▼スクリプトが実行され、スプレッドシートで指定したメールアドレスに次のようなメールが届きます。

画像6

ステップ2:Googleスプレッドシートのセルから値を読み取る

アラートメールを送信できるGASの作成に成功したので、次はそのアラートメールをより機能的にします。

Googleスプレッドシートからデータ値を読み取り、その値を確認し、その値が上限を上回っている、または下回っている場合にポップアップメッセージを発行する方法です。

これを行う前に、使用しているGoogleスプレッドシートに別のシートを作成する必要があります。この新しいシートを「レポート」と呼びます。

画像7

「セルD2」を比較対象とし、「売上合計」が250万を下回ったかどうか毎月知りたい場合を想像してください。

[ツール]、[スクリプトエディター]をクリックし、スクリプトウィンドウを開きます。

同じスプレッドシートを使用している場合「SendEmail()関数」が表示されますが、一旦切り取り、メモ帳に貼り付けてください、後で必要になります。空欄になったところで、次のコードを張り付けてください。

function CheckSales() {
 // Fetch the monthly sales
 var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("レポート").getRange("D2"); 
 var monthSales = monthSalesRange.getValue();
 var ui = SpreadsheetApp.getUi(); 
 // Check totals sales
 if (monthSales < 2500000){
   ui.alert('Sales too low!');
   }
}

[保存]をクリックし、[実行]をクリックしますと以下の画面が出てくると思います。

画像8

ステップ3:全てを組み合わせる

次に、作成した2つのスクリプトを1つのスクリプトに結合します。

シート1(B2):アラート電子メールの受信者
レポート(D2):販売情報(売上合計)
※現時点ではこんな感じになってると思います。

スクリプトエディタのすべてのコードを、ここに示すように編集した2つの関数に置き換えます。

function CheckSales() {
// Fetch the monthly sales
var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("レポート").getRange("D2"); 
var monthSales = monthSalesRange.getValue();
// Check totals sales
if (monthSales < 2500000){
  // Fetch the email address
  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1").getRange("B2");
  var emailAddress = emailRange.getValue();

  // Send Alert Email.
  var message = '今月の合計売上は' + monthSales + 'です。'; // Second column
  var subject = '売上が250万を下回っています';
  MailApp.sendEmail(emailAddress, subject, message);
  }
}

ここでの編集に注意してください。

注意点①:以下のオーダー(順番)で貼り付け
CheckSales () → IFステートメント → SendEmailのスクリプト

注意点②:「monthSales変数+文字」を使用して、メール本文を作成

注意点③:毎月特定日にCheckSales()関数をトリガー

※これを行うには、スクリプトエディタで次のようにします。
1. [編集]をクリック>[現在のプロジェクトのトリガー]をクリック
2. 画面の下部にある[新しいトリガーの作成]をクリック
3. 実行する[CheckSales]関数を選択
4. イベントのソースを[時間主導型]に変更
5. トリガータイプ[月ベースのタイマー]に変更
6. [保存]をクリックして、トリガーを確定

画像10

画像9

最後に

ご覧のとおり、Google Apps Scriptsは多くの機能を小さなパッケージに詰め込んでいます。ほんの数行の簡単なコードで、いろんなことができてしまします。

さらに実験したい場合は、スプレッドシートの別のセルに「2,500,000万」を入力し、比較制限を追加。それをスクリプトに読み込んでから比較してください。このように、シートの値を変更するだけで制限を変更できます。