文系出身の営業マンが Google Apps Script で仕事をサボってみた

文系出身の営業マンが独学で身につけた Google Apps Script の知識をひけらかし、さらけ出し、はずかしい姿までを公開するブログ。

【業務効率化】Google Apps Script を用いてスプレッドシートからメールを一斉送信する

概要

Google Apps Script(以下、GAS という)を使い一斉メールを送る方法を紹介します。

営業の人はいちいち御礼メールとか送るのめんどくさいですよね。激しく時間がもったいないです。 それに、メール一斉送信ツールにお金払うのはもったいない!!

全コード

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName("{シート名}");
  
  var text = sheet.getRange(2, 1).getValue();
  var title = sheet.getRange(1, 1).getValue();
  
  for(i=5; i< sheet.getLastRow(); i++){
    var the_company = sheet.getRange(i, 1).getValue();
    if (the_company !=""){
      var the_name = sheet.getRange(i, 2).getValue();
      var the_email = sheet.getRange(i, 3).getValue();
      var replace1 = text.replace("{名前}", the_name);  
      var replace2 = replace1.replace("{会社名}", the_company);
      MailApp.sendEmail(the_email, title, replace2)
    }
    
    if (the_company == ""){
      break;
    }
  }
}

【前提】GAS を使ってメールを送る

GAS には Gmail を使ってメールを送る機能があります。

function myFunction() {
  MailApp.sendEmail('{メールアドレス}', '{タイトル}', '{本文}');
}

上記であれば、一つ一つのメールに対して各項目を埋め、 本文を書き、心を込めてメールを送ることになります。 素晴らしいことですが、それではサボれません。

ですのでスプレッドシートに入力した項目を 引数に入れて一斉にメールを送信できるようにしていきます。

【準備】スプレッドシートに必要事項を入力

今回はスプレッドシートの入力内容をもとに メールを送信しますので、必要事項を入力しておきます。

以下のように入力しました。 適当でいいでしょう。

  • A1にメールタイトル
  • A2にメール本文
  • A列に会社名
  • B列に名前
  • C列にメールアドレス

f:id:cohki:20160703105416p:plain

本文に書いている「{会社名}」「{名前}」 については後ほど説明します。

【本番】全員に送る

いつも通りにシートを取得します。 ここではシート名によってシートを取得しています。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName("シート名");
  }

メール本文とタイトルを取得します。 getRangeメソッドでセルの場所を指定し getValueメソッドでそのセルの値を取得しています。

function myFunction() {
~  
   
  var text = sheet.getRange(2, 1).getValue();
  var title = sheet.getRange(1, 1).getValue(); 
}

for文を使い各メールを送る準備をします。 1列目の会社名が入力されている場合とされていない場合で分岐して処理をしていきます。もしthe_companyが空白であればメールを送る必要はないのでその場合はこのループから抜けるようになっています。

※getLastRowメソッドはそのシートの最後の列数をとってきます

function myFunction() {
  ~
  
  for(i=5; i< sheet.getLastRow(); i++){
    var the_company = sheet.getRange(i, 1).getValue();
    if (the_company !=""){
    }
    if (the_company == ""){
      break;
    }
  }
}

その会社に対応する名前とメールアドレスをとってきます。

function myFunction() {
~
  
  for(i=5; i< sheet.getLastRow(); i++){
    var the_company = sheet.getRange(i, 1).getValue();
    if (the_company !=""){
      var the_name = sheet.getRange(i, 2).getValue();
      var the_email = sheet.getRange(i, 3).getValue();
    }
    if (the_company == ""){
      break;
    }
  }
}

最後に text の内容を変更しメールを送ります。 replace メソッドで text を以下のように変更していきます

{名前} → the_name 
{会社名} → the_company

あとはsendEmailメソッドを使いメールを送ります。 これで完成です。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName("シート名");
  
  var text = sheet.getRange(2, 1).getValue();
  var title = sheet.getRange(1, 1).getValue();
  
  for(i=5; i< sheet.getLastRow(); i++){
    var the_company = sheet.getRange(i, 1).getValue();
    if (the_company !=""){
      var the_name = sheet.getRange(i, 2).getValue();
      var the_email = sheet.getRange(i, 3).getValue();
      var replace1 = text.replace("{名前}", the_name);  
      var replace2 = replace1.replace("{会社名}", the_company);
      MailApp.sendEmail(the_email, title, replace2)
    }
    
    if (the_company == ""){
      break;
    }
  }
}

以上です。