【gmail】Googleスプレッドシートから自動送信させる【自動送信】

どうも、oyanです。
普段仕事でgmailを使ってます。
月初に同じようなメールを毎月送っているのですが、
とっても面倒くさいです。
定期的に送信するだけだから自動化できないかなと思い作ってみました。
簡単にgmailを定期的に自動送信する仕組みが作れましたのでご紹介します。

この記事で分かること

  • gmailの自動送信システムの作り方
  • Googleスプレッドシートのプログラム(GAS)の作り方
  • 作ったプログラム(GAS)を定期的に実行するやり方(メールを自動送信)

※ GAS = Google App Script

全体の流れ

  1. googleアカウントを作成(すでに持っている人はOK)
  2. googleスプレッドシートを1つ作成(私は名称を「AutoMailSender」としました)
  3. googleスプレッドシートを編集
  4. googleスプレッドシートにプログラムを追加(作成)する
  5. 自動実行するための仕掛け(トリガ)を設定する

googleアカウントを作成

流石にこれは説明は不要かと思いますので割愛。
インターネットで適当に調べてください。

googleスプレッドシートを1つ作成

以下のURLにアクセスして、googleスプレッドシートを1つ作成します。
細かな手順は割愛しますが、インターネットで調べると沢山情報が出てくると思います。
https://www.google.com/intl/ja_jp/sheets/about/

googleスプレッドシートを編集

以下のようにスプレッドシートを編集しておきます。

1行目はヘッダ列です。セルの値自体には特に大きな意味はないです。
2行目以降が送信するメールの情報です。

  • A列に宛先のメールアドレス
  • B列にメールの題名
  • C列にメールの本文
  • D列に送信日時
  • E列は空欄にしてください(メールが自動送信されると送信した時の日時が自動で入ります)
  • F列は空欄にしてください(1を入れるとそのメールは送信日時が来ても送信が抑止されます)

googleスプレッドシートにプログラムを追加(作成)する

[ツール]メニューの[スクリプトエディタ]を選択する。

スクリプトエディタ画面が表示されます。
プログラムをコピーしてペーストしてください。

function calledByCron() {
  const COL_NO_TO       = 0;  // to(宛先)列
  const COL_TITLE       = 1;  // title(メールのタイトル)列
  const COL_DESCRIPTION = 2;  // description(メール本文)列
  const COL_SEND_MAIL   = 3;  // send_mail(送信予定日時)列
  const COL_SENT_MAIL   = 4;  // sent_mail(送信完了日時)列
  const COL_STOP_FLAG   = 5;  // stop_flag(送信抑止フラグ)列

  // 現在時刻を取得
  var dtLimit = new Date();

  // 開始行数
  const START_ROWS = 2;  // 2行目から
  // 開始列数
  const START_COLS = 1;  // A列から

  // シートの取得
  var sheet = SpreadsheetApp.getActiveSheet();

  // シートのデータを取得(2次元配列)
  var sheetData = sheet.getSheetValues(START_ROWS, START_COLS, sheet.getLastRow(), sheet.getLastColumn());

  // シートの各行ごとにデータを取り出す
  sheetData.forEach(
    function(value, index)
    {
      // stop_flag値が空文字なら実行
      if ( value[COL_STOP_FLAG] == "" )
      {
        // 送信完了していない
        if ( !value[COL_SENT_MAIL] )
        {
          // 送信予定日時が現在時刻より前ならば、メールを送信する
          if ( (new Date(value[COL_SEND_MAIL])).getTime() < dtLimit.getTime())
          {
            // メールを送信する
            MailApp.sendEmail(value[COL_NO_TO], value[COL_TITLE], value[COL_DESCRIPTION]);
            // 送信完了日時をシートに書く
            sheet.getRange( (START_ROWS + index), (COL_SENT_MAIL + 1)).setValue(dtLimit);
          }
        }
      }
    }
  );

  // memo :
  //   getRange(row, column [, numrows [, numcolumns]])
  //     row        [int] 指定する範囲の行番号。
  //     column     [int] 指定する範囲の列番号。A列を1とする。
  //     numrows    [int] (省略可)範囲の行数を指定する。デフォルト1。
  //     numcolumns [int] (省略可)列数を指定する。デフォルト1。
}

自動実行するための仕掛け(トリガ)を設定する

手順1 : google app scriptの画面上で、以下画像の赤枠をクリック

  • G Suite Developer Hub なる画面が開きます
手順2 : 右下の「トリガーを追加」をクリック

手順3 : 以下のように設定して保存する

まとめ

ここまでの手順で作成すると、自動的にメールが送信されます。
テストする際には、宛先のメールアドレスを自分自身のメールアドレスにしてお試しください。
また、宛先のメールアドレスはカンマ「,」区切りで入力すると複数の宛先を指定することが出来ます。

これで、自動メール送信システムの出来上がり!
手を抜けるところは手を抜いて楽チンしましょう!!