【残業3割減】GASでメールの一斉送信を自動化

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

複数の相手に同じ内容のメールを一斉送信するのは残業の原因になりますよね。

しかし、GASを使えば1クリックでメールを送信が可能。

この記事ではコピペOKのGoogle Apps Scriptのコードで解決します。

この記事はこんな人におすすめ!

  • 1クリックで大量のメールを一斉送信したい
  • メールに費やす時間を減らして毎日の残業から解放されたい
  • プログラミングでJavaScriptを学んだけど何を作っていいかわからない

誰でも無料で簡単にできるので気軽に学んでいきましょう!

目次

メールを一斉巣送信するアプリのイメージ

GASでメールを一斉送信するイメージ

1クリックでスプレッドシートに登録したメールアドレスに一斉送信するアプリを作成します。

例えば、あなたが取引先全員にメールを送信するなら莫大な時間と労力が必要。

また、本文のはじめに「〇〇様」と1つずつ書き換えるのでミスの原因にもなります。

GASならすべてのメールアドレスに「○○様」付きで自動送信できます。

あっきょ

コード次第であなた好みにメール本文を送れるッスよ!

メールを一斉送信する準備

Google Apps Script でメールを一括で大量に送信する準備。

ファイルは2つ必要です。

必要なファイル

  • Google ドキュメント…送信するメール本文の作成
  • Google スプレッドシート…顧客データの保存 & GASのプログラムの実行

Google ドキュメントの設定

Google ドキュメントにメールの本文になる文章を記入します。

文章内の {customer} には、後に作成する「リスト」シートの「姓」と「名」を合わせた名前が入ります。

Google ドキュメントの編集は以上です。

Google Apps Scriptでメールを一斉送信するのに使うGoogle ドキュメントの説明

Google スプレッドシートの設定

メールアドレスを含めた顧客データのスプシを作成していきます。

今回は以下の3つを1行目に記入していきます。

  • メールアドレス
Google Apps Scriptでメールを一斉送信するのに使うGoogle スプレッドシートの準備

2行目からそれぞれの顧客データを登録します。

送信テストするのでメールアドレスは自身のメールアドレスに書き換えましょう。

Google Apps Scriptでメールを一斉送信するのに使うGoogle スプレッドシートの準備で顧客データを記入

「シート1」を右クリックして名前を変更。

顧客データのワークシートなので「リスト」と名付けます。

Google スプレッドシートの編集は以上です。

Google Apps Scriptでメールを一斉送信するのに使うGoogle スプレッドシートの準備でシート名を「リスト」に変更

サンプルコードを貼り付ける方法

サンプルコードはGoogle スプレッドシートにコピペ。

上バーの「拡張機能」の中にある「Apps Script」をクリックしてコードを貼り付けます。

Apps Script表示

メールを一斉送信するサンプルコード

Gメールの一斉送信するサンプルコードの公開とコードの説明をしていきます。

解説の項目

  • サンプルコード
  • A, メールに送信する内容を設定
  • B, 使用するスプレッドシートの定義
  • C, 処理するスプレッドシートのセル番号の定義
  • D, Google ドキュメントからメール本文を取得
  • E, 顧客ごとにメールを送信

サンプルコード

右上にあるマークを押すとコードのコピペを一瞬でできます。

また、コード内で文頭にアルファベットが付いているコメントごとに詳細を説明していきます。

function sendMail() {
 //A.メールに送信する内容を設定
  const DOC_URL = 'Google ドキュメントのURL';
  const senderName = '送り主の名前'; 
  const subject = 'メールのタイトル';

  //B.使用するスプレッドシートの定義
  const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const listSheet = spreadSheet.getSheetByName('リスト');  

  //C.処理するスプレッドシートのセル番号の定義
  const LAST_NAME_COL = 1;    //苗字の列番号
  const FIRST_NAME_COL = 2;   //名前の列番号
  const MAIL_ADDRESS_COL = 3; //メールアドレスの列番号
  const START_ROW = 2;        //for構文で読み込み始める最初の行番号
  const listLastRow = listSheet.getLastRow();

  //D.Google ドキュメントからメール本文を取得
  const openDoc = DocumentApp.openByUrl(DOC_URL);
  let wholeText = openDoc.getBody().getText(); 

  //E.顧客ごとにメールを送信
  for (var a=START_ROW; a<=listLastRow; a++){
      const recipient =  listSheet.getRange(a,MAIL_ADDRESS_COL).getValue(); //メールアドレスを取得
      const options = {name: senderName, from: sendMailFrom}; //「姓」と「名」を取得して、名前を作成
      const customerName = listSheet.getRange(a,LAST_NAME_COL).getValue()+ " " +listSheet.getRange(a,FIRST_NAME_COL).getValue();
      let body = wholeText.replace("{customer}", customerName);

      MailApp.sendEmail(recipient, subject, body, options);
  }   

}

A, メールに送信する内容を設定

//A.メールに送信する内容を設定
 const DOC_URL = 'メールの本文になる Google ドキュメントのURL';
 const senderName = '送り主の名前'; 
 const subject = 'メールのタイトル';

メールに送信する内容を定義します。

3つの定数の「’ ‘」の中を全て書き換えますが、定数DOC_URL はGoogleドキュメントのURLに書き換え。

Google ドキュメントのURLの取得方法は次に説明します。

Google ドキュメントのURLの取得の方法

まず、メールの本文を記入した Google ドキュメントが保存されている場所まで移動。

ドキュメントにカーソルを合わせて右クリックし、「リンクを取得」を選択。

GoogleドキュメントのID取得

右側に「リンクをコピー」をクリックすると自動でコピー。

コピーしたリンクを定数DOC_URLに上書きします。

GoogleドキュメントのURL表示

B, 使用するスプレッドシートの定義

//B.使用するスプレッドシートの定義
  const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const listSheet = spreadSheet.getSheetByName('リスト');  

編集するGoogle スプレッドシートを指定します。

定数spreadSheetは現在アクティブな状態のスプシを取得し、定数listSheetで名前が「リスト」のシートを取得します。

C, 処理するスプレッドシートのセル番号の定義

//C.処理するスプレッドシートのセル番号の定義
 const LAST_NAME_COL = 1;     //苗字の列番号
 const FIRST_NAME_COL = 2;    //名前の列番号
 const MAIL_ADDRESS_COL = 3;  //メールアドレスの列番号
 const START_ROW = 2;         //for構文で読み込み始める最初の行番号
 const listLastRow = listSheet.getLastRow();

「リスト」シートのセル番号をそれぞれ取得。

定数listLastRowはセルに値が埋まっている最後の行番号を取得します。

getLastRowメソッドの詳細は以下の記事をご参考ください。

D, Google ドキュメントからメール本文を取得

//D.Google ドキュメントからメール本文を取得
  const openDoc = DocumentApp.openByUrl(DOC_URL);
  var wholeText = openDoc.getBody().getText(); 

メールの本文を記入したGoogle ドキュメントのURLを取得します。

また、ドキュメント内の文章をgetTextメソッドで読み込みます。

E, 顧客ごとにメールを送信

//E.顧客ごとにメールを送信
  for (var a=START_ROW; a<=listLastRow; a++){
      const recipient =  listSheet.getRange(a,MAIL_ADDRESS_COL).getValue(); //メールアドレスを取得
      const options = {name: senderName, from: sendMailFrom}; //「姓」と「名」を取得して、名前を作成
      const customerName = listSheet.getRange(a,LAST_NAME_COL).getValue()+ " " +listSheet.getRange(a,FIRST_NAME_COL).getValue();
      var body = wholeText.replace("{customer}", customerName);

      MailApp.sendEmail(recipient, subject, body, options);
  }   

「リスト」シートに登録した顧客の数だけメールを1件ずつ送信します。

定数costomerNameにはフルネーム(姓 + 名)を代入し、ドキュメント内の {costomer} にreplaceメソッドで上書します。

不備がない場合、MailAppクラスでメールを送信して完了です。

このクラスの詳細は以下の記事をご参考に。

コードの説明は以上です。

メールを一斉送信するテスト

実際に、GASで作成したメールの一括送信をテストしていきましょう。

Apps Scriptの上バーの文字が「sendMail」になっていたら「実行」を押します。

Google Apps Script でメールを一斉送信するsendMail関数の実行

「このアプリはGoogleで確認されていません」と表示した場合はこちら

メールが届いてドキュメントの {custom} が書き換わったことも確認できます。

メールが届かない場合は、アドレスの打ち間違いが考えられるのでご確認ください。

Google Apps Script でメールを一斉送信するsendMail関数を実行した結果

まとめ | GASを挫折しないで学ぶには

以上、Google Apps Script を使ったメールの一斉送信を自動化する方法でした。

そのままコピペしたり、プログラミングの練習や動作確認用に使ったりしてみましょう。

GASを効率的に学ぶなら以下の2つの方法が多いです。

  • 参考書やオンライン教材で独学
  • プログラミングスクールを利用

正しく学ぶことで非エンジニアでも実用的な業務効率化のスキルが身に付きます

デイコーでは、GASのサンプルコードからおすすめのプログラミングまで幅広く紹介。

初心者にもわかりやすく解説しています。

あっきょ

プログラミングスクールは82社を分析したッス!

次回の記事もご期待ください!

それでは、よいプログラミングライフを!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系未経験のWebエンジニア。事務職がプログラミング学習して社内SE部門立ち上げ&Webサイト作成。業務効率化で残業80%減を達成。得意な言語 : GAS, JavaScript, Python

目次