Google Apps Script

【今日から始める自動化】GoogleドキュメントとスプレッドシートでGmailから自動でメールを送るやり方

みなさまお疲れさまです。

今回はGoogle Apps Script(以下GAS)を使って、Googleドキュメントとスプレッドシートを駆使した自動メール送信ツールの作成について解説していきます。

今回解説していくのはこちら

何もなかった下書きに、スプレッドシートの「下書きを作成」ボタンひとつでメールが出力されるというものです。(今回は下書きを作成するものを取り上げましたが、このまま自動送信させることも可能です)

先に言っておきます、超便利です。
知っているだけでいくらでも応用が効きます。
皆様の業務の中でも自動化できるものがあればすぐに取り入れられるよう解説していくので、ご自身の業務の中で活かせそうな場面を考えながら見ていただけると幸いです。

GASを全く使ったことがない方のためになるべく丁寧に解説していきますのでぜひパソコンを開きながら取り組んでみてください。

GASってなに?という方は以前解説した記事がありますので、初めて聞いたという方はこちらからチェックしてみてね

https://gyoumu-kaizen.blog/%e6%a5%ad%e5%8b%99%e6%94%b9%e5%96%84%e3%81%ae%e3%82%ab%e3%82%ae%e3%81%af-gas-%e3%81%ab%e3%81%82%e3%82%8a%ef%bc%81/

メール自動化の流れ

今回作っていくメール自動送信ツールの概要はこんな感じです

  • 任意のタイミングもしくは時間等をトリガーとした自動送信or下書きの作成
    (今回は任意のタイミングでメールの下書きを作成するように作っていきます)
  • 本文はGoogleドキュメントで予め型を作成しておく
  • 宛先に合わせた内容をスプレッドシートに入力した後、Googleドキュメントの型に自動挿入して本文作成
  • 件名、宛先はGoogleスプレッドシートで管理

今回は試しに、「今日の天気を特定の人に報告するメールを自動で作る」という想定で作ってみました。

そして実際に作ってみたのがこちら
◆Googleドキュメントにメール本文の型を作成

◆Googleスプレッドシートに各入力フォームを作成

◆スプレッドシートに紐付いたGASを記述(詳細ははのちほど解説していきます)

Googleスプレッドシートの各欄を記入、送り先に合わせた内容を記載します。
そして「送信ボタン」をクリックすると…

このように、Gmailに反映され自動でメールを送ってくれるという代物です。

超便利ですよね…!!!
私は普段業務の中で、定型文のメールに関してはこのやり方で先に型を作っておいて、自動で送れるようにしています。

これ初めてからメールに取られる時間がめちゃくちゃ減ったので本当におすすめです…!!

実際に作ってみましょう

ではここからはどのような仕組みで自動で送っていくのか、実際に作りながら作り方を解説していきます。

Googleドキュメントにメール本文の型を作成

今回は試しに、「特定の人に今日の天気を報告するメール」を作成していきます。
メールの本文は以下のようにします

○さん

おつかれさまです。かわぐちです。
今日の天気の報告をします。

◆○月○日(○曜日)の天気

(今日の天気)

以上です。

よろしくおねがいいたします。

この本文に、各項目(宛先、日付、今日の天気)を別フォーマットから自動で挿入し完成した本文を、そのままメールの下書きに保存できるようにしていきます。

Googleドキュメントに上記の型を記載するわけですが、一つ注意点があります。
「○さん」や「○月○日(○曜日)」など、メールの宛先によって変わってくるところはあとから好きな単語を代入できるよう、箱を作っておく必要があります。

GASが認識できるよう、箱は{}で記載し、その中にその箱の名前を記載します。

{name}さん

おつかれさまです。かわぐちです。
今日の天気の報告をします。

◆{day}の天気
{weather}

以上です。
よろしくおねがいいたします。

これでメール本文の型の完成です。

Googleスプレッドシートに各入力フォームを作成

今回スプレッドシートには2つのシートを作成しました。
①メール本文及び宛先、件名を指定するフォーム
②メールリスト
順に解説します。

メール本文及び宛先、件名を指定するフォーム

スプレッドシートにはシート名を「入力フォーム」にし、以下のように作成します。

「メールアドレス抽出」の下の枠には
=VLOOKUP(C3,‘メールリスト’!A2:B4,2,0)
と記載をしています。

基本的には打ち込んで記載するだけなのですが、上記の工夫を入れることで宛先を指定したら自動でメールアドレスを抽出す」ことができるようになります。

これを行うために、メールリストを作成するのです。

メールリスト

ではスプレッドシートに追加で、「メールリスト」という名前のシートを作成します。

メールリストは見ていただくとわかるとおり、名前とメールアドレスを一覧で記載しています。

入力フォームの宛先欄を名前の選択式にして、VLOOKUP関数を使用することで名前に対応したメールアドレスをピックアップすることができるのです。

VLOOKUP関数がわからない人はまた別途記事で解説するので、今は一旦コピペで対応をお願いします笑

スプレッドシートに紐付いたGASを記述

ここからはコードを記述していきます。(貼り付けでOK)

まずはGoogleスプレッドシートから、GASを記述するスクリプトエディタを開きます。

こちらに、以下を記述していきます。

function createDraft() {
  //シートを読み込む
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var nf = ss.getSheetByName("入力フォーム");
  var ml = ss.getSheetByName("メールリスト");
  //各変数を宣言
  const name = nf.getRange("C3").getValue(); //宛先の名前を取得
  const rmail = nf.getRange("D3").getValue(); //宛先のメールを取得
  const day = nf.getRange("C4").getValue(); //日付を取得
  const weather = nf.getRange("C5").getValue(); //天気を取得
  //スプレッドシートのURLからドキュメントの本文を取得
  const DOC_URL = nf.getRange("C7").getValue();
  const doc = DocumentApp.openByUrl(DOC_URL);
  let docText = doc.getBody().getText();
  //取得した本文に、スプレッドシートの各値を代入し本文を完成させる
  docText = docText
   .replace("{name}",name)
   .replace("{rmail}",rmail)
   .replace("{day}",day)
   .replace("{weather}",weather)
   //※代入する回数が複数ある場合は.replace(/{●}/g,●)と記述する
  let subject = nf.getRange("C6").getValue(); //件名を取得
  //最後に、取得した本文、宛先、件名をもってGmailへ指示を出す
  GmailApp.createDraft(rmail, subject, docText); //Gmailに下書きを保存
  //そのまま自動送信させる場合は GmailApp.sendEmail(recipient, subject, docText);と記述
  //メッセージボックスで報告
  Browser.msgBox("下書きを作成しました!");
}

これで準備OKです!

あとは起動させるトリガーを作っていきます。トリガーとして設定できるのは時間や毎日毎週などの定期的な設定、またスプレッドシートを開いた時などの行動に起因させるとき、あとボタンなどに登録しておき任意のタイミングで起動できるようにする方法があります。

今回はスプレッドシートに「ボタン」を作成しそこにスクリプトを割り当てて任意のタイミングでメールが送れるようにしていきます。

まずはボタンを作成します。スプレッドシート上部の