Google Apps Script 時短ツール

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

お仕事おつにゃッス🐈

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

同じ内容のメールを一斉に送信するのは、多大な時間と労力が必要かつ残業の原因ですよね?

この記事ではそのお悩みを、コピペOKのGoogle Apps Scriptのコードで解決します。

あっきょ
この記事は以下で悩んでいる人におすすめ!

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

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

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

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

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

あなたはお客様全員に同じ内容のメールを送信し、本文のはじめに「〇〇様」と1つずつ書き換える必要があります。これを毎回してたら莫大な時間と労力が必要です。

しかし、GASなら1クリックすると全てのメールアドレスに自動送信できます。

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

Google Apps Script でメールを一括で大量に送信する準備をします。ファイルは2つ必要です。

必要なファイル

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

Google ドキュメントの設定

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

文章内の {customer} には、「リスト」シートに登録されている顧客データの「姓」と「名」を合わせた名前が入ります。Google ドキュメントの編集は以上です。

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

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

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

今回は「姓」、「名」、「メールアドレス」の計3つの顧客データを列A から列C の1行目に見出しを記入していきます。

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

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

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

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

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

顧客データのワークシートなので「リスト」と名付けます。Google スプレッドシート の編集は以上です。

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

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

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

上バーの「拡張機能」の中にある「Apps Script」をクリック。ここにコードを書きます。

GASをスプレッドシートに記入する際の「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 ドキュメントのURLの取得方法

Google ドキュメントにカーソルを合わせて右クリックするとメニューが現れます。その中の「リンクを取得」をクリックします。

Google ドキュメントのURLの取得で「リンクを取得」をクリック

右側に「リンクをコピー」をクリックするとコピー完了します。コピーしたリンクを定数 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メソッドの詳細は以下の記事をご参考ください。

【5分で解決】GASでスプレッドシートの最終行と最終列を取得

続きを見る

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 にはフルネーム(姓 + 名)を代入し、Google ドキュメント内の {costomer} に replaceメソッドで上書します。

不備がない場合、MailAppクラスでメールを送信して完了です。このクラスの詳細は以下の記事をご参考に。

【基本】GASでメールを送信するsendMailメソッドの3つの使い方

続きを見る

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

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

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

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

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

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

【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法

続きを見る

メールが届き、Google ドキュメントの {custom} が書き換わったことも確認できます。メールが届かない場合は、アドレスの打ち間違いの可能性がありますのでご確認ください。

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

【便利】メールの送信時にBCC設定やファイル添付するには?

この記事ではメールを一斉送信する方法を紹介しました。

GASを使えば、メールに必要な他のオプションも付けることができます。

例えば、GASでメールをBCCかCCに設定して送信ファイルを添付して送信などです。

当サイトでは、コピペOKのサンプルコードも用意していますのでぜひご活用ください。

【残業2割減】GASでBCCかCCでメールを送信

続きを見る

【コピペOK】GASでメールの送信で添付ファイルを追加

続きを見る

おわりに | GASでメール送信を業務効率化

以上、Google Apps Script メールを一斉送信する方法でした。

そのままコピペして日常業務で使いやすいように改修したり、プログラミングの練習や動作確認用に使ってみましょう。

GASでさらに業務効率化したい場合、参考書やプログラミングスクールを使うとあなた自身でアプリを作るスキルが身に付きます

プログラミング未経験者にもわかりやすく解説しています。

GASユーザーのあっきょがおすすめの勉強方法はこちら↓

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

-Google Apps Script, 時短ツール
-, , , , , , , , , , , , , , , , , , ,