Initial Site

Initial Site

Initial Site

【簡単】GASでスプレッドシートの送信リストからメールを送る

  • ヨシモト  2018/07/12 18:50
createSSAsan

営業部ヨシモトです。

 

似たようなメールを何通も送らなければならないことがある方は読み進めてみてください。
(そういうことがない、という方はコメント欄から好きなラーメン屋さんを教えてください!)

 

似たようなメールを何通も送るのは大変

操作自体は難しくないものの、似たような内容であれば単調な作業になりがちですし、集中力が途切れてしまうと人為的なミスが起こってしまうこともないとは言えませんね。
「作業」「人為的なミス」こういった問題を解決するにはプログラムの力を借りるのが一番でしょう!

 

GASとGmailを使って解決

今回もGoogleさんのツールを使って解決しましょう。
例によってGoogle Apps Script(以下、GAS)を使います。
また、メーラーについて今回はGmailを対象としております。

 

使うもの

Googleスプレッドシート
Gmail
Google Apps Script(GAS)

 

スプレッドシート(Excel)で送信リストを用意する

こういう作業をする場合はExcelなどで既に送信リストをお持ちのこともあるかと思います。
その場合はそのリストをそのまま使いましょう。

ExcelファイルをGoogleドライブへドラッグアンドドロップ、選択してクリックすると「スプレッドシートで開く」と出てきますのでこれでほぼそのままスプレッドシートとして扱うことできます。

リストがまだない場合はスプレッドシートで作っていきましょう
項目ごとに縦に並べてください。

list

ここでは「お名前」「メールアドレス」の順番で並べていますが、どの順番に並べてもスクリプトを書く時に調整ができますのでご安心ください。
リスト完成です。

 

メール送信(下書き)スクリプト

メール送信スクリプトを理解してみましょう。
本来であれば「送信」は sendEmail を使いますが、実際に送信されてしますので
ここでは「下書き」として createDraft を使ってご説明します。

createDraft(recipient, subject, body)

基本的にはこれだけでできます。

参考リンク: Class GmailApp | Apps Script | Google Developers

 

実行できるものとしてはこれです。

function testMailDraft(){
  GmailApp.createDraft(
    'hoge@example.com', 
    'これはメールの下書きテストの件名です', 
    'これはメールの下書きテストの本文です。'
  );
}

GmailApp.createDraft(recipient, subject, body)は、
「Gmailで下書きを作る(宛先, 件名, 本文)」
というような意味を表しています。
ここで引数(丸括弧の中身)は「,」を入れることで区切られる(改行しても区切られない)のでわかりやすく三段にしてみました。

これを実行するとこのようになります。

testdraftlist

testDraft

これを応用してリストから下書きを作ってみましょう。

 

スプレッドシートのリストをもとにメールを作ってみましょう

件名は全て同じもの、本文はお名前だけ入れ替えると仮定し、考え方としては

createDraft(recipient, subject, body)

「recipient」と「bodyの先頭に入れるお名前」の2項目をリストから配列として取得し、取得した配列からひとつずつ順番にループさせるイメージです。

function mailDraft() {
  var ss = SpreadsheetApp.getActive().getSheetByName('リストシート');

  //メールアドレスをリストから取得して配列に入れる
  var mailaddres = ss.getRange(2, 2, ss.getLastRow()-1).getValues();

  //お名前をリストから取得して配列に入れる
  var name = ss.getRange(2, 1, ss.getLastRow()-1).getValues();
  
  //リストの数だけ下書き作成を繰り返す
  for( var i = 0, l = mailaddres.length; i < l; i++ )
    GmailApp.createDraft(
    // ↓メールアドレスを入れた配列からひとつずつ取り出す
    mailaddres[i],
    // ↓件名 
    'あなたの好きなラーメン屋を教えてください。', 
    // ↓お名前を入れた配列からひとつずつ取り出す(\nは改行)
    name[i] + 'さん' +'\n' + '\n' +
  // ↓本文
    'あなたの好きなラーメン屋を教えてほしいです。' + '\n' +
    'ちなみに弊社オフィスの近くにはラーメン二郎 横浜関内店があります。', {
    // ↓bodyのあとに「,{}」を追加することでオプションが設定できます。ここではCCを追加してみました。
      cc: 'test@example.com'
    });
}

これを実行すると
createSS
createSSAsan
できました。

コード内の//の後に説明のコメントを入れておきました。

var name = ss.getRange(2, 1, ss.getLastRow()-1).getValues();

↑この部分ですが、2行目の1列目(A2セル)から最終行から-1した行数の値を取得する、となっています。
最終行から-1するのは行数に「A1(お名前)」の数も含んでしまうためです。

bodyの後ろに「,{optin}」としてCCなどオプションを追加することができます。
オプションについては下記のページより確認できます。
Class GmailApp |Apps Script | Google Developers

 

以上は、念のため下書きとして書きましたが、
createDraft
sendEmailに変えるとそのまま送信までできます。

また、メール送信に限りませんがGASを利用する際に扱える数に制限がありますのでご注意ください。
下記のページで確認ができます。
Google Apps Script ダッシュボード – Google ドライブ

 

私はラーメンよりもカレーの方が好きですが、ラーメンでしたら地獄ラーメン 田中屋をおすすめいたします。

地獄ラーメン 田中屋 (じごくらーめん たなかや) – 伊勢佐木長者町/ラーメン [食べログ]

それでは!!


コメントをどうぞ

ツールの記事

  1. createSSAsan
    【簡単】GASでスプレッドシートの送信リストからメールを送る
  2. Vimが辛い人
    Vimが使いにくい人はVimiumからはじめてみたらいいかもしれない
  3. 正規表現を使う
    【GAS】正規表現を使ってGmailの本文から文章を抜き出す
  4. webScraping_boy
    スプレッドシートを使って簡単なスクレイピングをしてみよう

おすすめ記事

  1. スギ花粉
    鼻がムズムズ目がカユカユな花粉症についてまとめてみた
  2. 『テレビ観ないんだよね…』と言うのがかっこいいと思っている人に告ぐ!
  3. 出典:無料壁紙:格闘技がテーマの写真やイラスト画像まとめ(格闘家・ブルースリー)
    ブルース・リーの出身地ってどこだかわかりますか?
  4. ハイビスカス
    ウチナーンチュが沖縄に帰った時に必ず行くお店10選+α
  5. イニシャルサイトコーポレートサイト
    コーポレートサイトをリニューアルしました
  6. なんでもQ
    相談Q&Aサイト「なんでもQ」開発中です!
  7. さんぽすフォトコンペ開催中
    今年もさんぽすフォトコンペ開催しました!

人気の記事

  1. クロックスの偽物と本物の違い
    クロックスの本物と偽物の違いを比べてみました
  2. ファミコン
    パズドラ、モンスト、白猫に続く次のゲームは…?
  3. konagaya_20150303
    日常でつい使ってしまう間違えやすい日本語
  4. konagaya20150513
    初心者でも気軽に登れて絶景が見れる山