スプレッドシートの使い方-スクリプトエディタで自動的にメール送信する方法

Googleスプレッドシートには表計算だけでなく、さまざまな機能があります。
その中から、スプレッドシートの情報を自動でメール送信する方法について紹介します。

この機能を使うことで便利な例を示しましょう。

以前にWebサイトの情報を取得する方法を紹介しましたが、取得するたびにスプレッドシートを開く必要がありました。

スプレッドシートの使い方-IMPORTXML関数でWebサイトの情報を取得(スクレイピング)する方法

しかし今回紹介する内容と組み合わせることで、スプレッドシートで一度設定しておけば、Webサイトの情報を自動で取得できるようになります。

紹介するコードは実際に動作するコードで、流用して構いません。
面倒な作業はどんどん自動化してしまいましょう。

1.スクリプトエディタでスプレッドシートの情報をメール送信する処理を書く

まずは、スプレッドシートの情報を抜き出してメール送信する処理を書きます。

  1. 送信したい情報が含まれているスプレッドシートを開きます。
  2. スプレッドシートのメニューで「ツール>スクリプト エディタ」を選択すると、新しいウィンドウが開きます。これがスクリプトエディタです。
  3. 自動で生成された次のコードを削除します。
    function myFunction() {
      
    }
    
  4. 代わりに、下のコードを貼り付けて、「●●●」の部分を書き換えます。「’(シングルクオーテーション)」はそのまま残してください。
    function sendMail_sample() {
      // 取得する情報が含まれているシート名(スプレッドシート内のシート名)
      const SHEET_TARGET = '●●●';
      // 取得する情報が表示されているセル('A1' のように指定)
      const CELL_TARGET = '●●●';
      // 送信先メールアドレス(自分のアカウントも可)
      const EMAIL_ADDRESS = '●●●@●●●';
      
      // スプレッドシートを定義
      var objSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
      // 処理対象シートを指定
      var objSheet = objSpreadSheet.getSheetByName(SHEET_TARGET);
      // 指定セルから情報を取得
      var strText = objSheet.getRange(CELL_TARGET).getValue();
      strText = CELL_TARGET + ': ' + strText;
      
      // メール送信(送信先アドレス, 件名, 本文)
      MailApp.sendEmail(  EMAIL_ADDRESS
                        , '自動取得結果'
                        , strText
                       );
    }//ここまで
    
  5. スクリプトエディタのメニューで「ファイル>保存」を選択して保存します。
    プロジェクト名は任意で構いません。

ちなみに、コードはJavaScriptというプログラミング言語で記述します。

JavaScriptのおすすめ本を知りたい方は、こちらの記事を参考にしてください。

JavaScript / jQuery の入門におすすめの本

プログラミングを学びたい方は、こちらの記事を参考にしてください。

経験者が教えるプログラミング入門の3ステップ

2.スクリプトエディタでメール送信処理の動作を確認する

次に、実際にメール送信されるかどうかを確認します。

スクリプトエディタのメニューで「実行>関数を実行>sendMail_sample」を選択します。
すると、次のようなメッセージが表示されるので、許可を与えます。

承認が必要です
(プロジェクト名) needs your permission to access your data on Google.

[許可を確認] [キャンセル]

スクリプトエディタのプロジェクトに接続許可を与える

手順は次の通りです。

  1. 承認が必要です
    (プロジェクト名) needs your permission to access your data on Google.

    [許可を確認] [キャンセル]
    「許可を確認」をクリックします。
  2. アカウントの選択
    「(プロジェクト名)」に移動
    許可を与えるスプレッドシートのアカウントを選択します。
  3. このアプリは確認されていません
    このアプリは、Google による確認が済んでいません。よく知っている信頼できるデベロッパーの場合に限り続行してください。

    詳細 [安全なページに戻る]

    「詳細」リンクをクリックすると表示される次のリンクをクリックします。
    (プロジェクト名)(安全ではないページ)に移動
  4. (プロジェクト名) が Google アカウントへのアクセスをリクエストしています(プロジェクト名) にアクセスを許可しますか?

    キャンセル [許可]

    「許可」をクリックします。

これで接続許可を与えることができたので、あらためて実行するために、スクリプトエディタのメニューで「実行>関数を実行>sendMail_sample」を選択します。
スプレッドシートのセルの情報が、指定したメールアドレスに送信されたはずです。

3.処理を自動で実行するために、スクリプトエディタでトリガーを設定する

最後に、処理を自動で実行するための設定を行います。

  1. スクリプトエディタのメニューで「編集>現在のプロジェクトのトリガー」を選択します。
  2. 「新しいトリガーを追加」をクリックします。
  3. 「実行」に「sendMail_sample」、「イベント」に「時間主導型」とメールを送信したい間隔を下の表を参考に指定して、「保存」をクリックします。
    分タイマー 1・5・10・15・30分ごと
    時タイマー 1・2・4・6・8・12時間ごと
    日タイマー 毎日○時頃
    週タイマー 毎週○曜の○時頃
    月タイマー 毎月○日の○時頃

あとは指定した日時になれば、動作確認したようにメールが送信されます。

面倒な作業はスクリプトエディタで自動化してしまおう

スクリプトエディタを使うと、JavaScriptで記述できることは実現できる、ということになります。
こんな便利な機能を使わないのは、もったいないです。
スクリプトエディタによる自動化で、作業を効率化しましょう!
そして節約した時間の一部で、ブログの他の記事も見てもらえるとありがたいです。

なお、今回紹介した内容では「○時頃」という指定まででした。
でも「○時○分」と詳細に指定できたら、もっとうれしいですよね。

欲張ると切りがないですが・・・詳細な時間指定もできるんです。

その方法については、また次回に紹介したいと思います。