プチ講座

【GAS】スプレッドシートからメールを送信

ニュース プチ講座 投稿者画像  

スプレッドシートからメールを送信する

前回作成した勤務表【シート起動時に自動で新規シートを作成】ですが、毎日コツコツと業務内容や訪問先を入力し、ついに完成!!
早速上司に確認をお願いするメールを作成・・・自動で送ってくれればいいのに・・・
という訳で今回は【スプレッドシートからメールを送信する】機能を追加していきます!!

実はこのメール送信、関数1つで作る事が出来ます。その関数とは
MailApp.sendEmail(宛先,件名,本文)
この宛先、件名、本文の3つの要素があればいいので例えば
MailApp.sendEmail(“t-kobayashi@emplos.biz”,”勤務報告書”,”更新したよー、確認しといてねー。”);
と書いておけば、簡単にメールが送信できます(ドヤァ)。

メール送信関数MailApp.sendMail()

それでは具体的な使い方を説明していきます。今回は以下の様にコードを作成しました。


function sendMail(){
  var fileName = SpreadsheetApp.getActive().getName();
  var sheetName = SpreadsheetApp.getActiveSheet().getName();
  
  var dAddress = "t-kobayashi@emplos.biz";
  var subject = fileName + "について";
  var content = "●●部長\nお疲れ様です。小林です。\n";
  content += "表題のファイル【" + fileName + "】 内の 【" + sheetName + "】シートを更新しました。\n";
  content += "ご確認いただけますようよろしくお願いいたします。";
  MailApp.sendEmail(dAddress,subject,content);
}

これをコピーしてもらうとすぐに使うことができます。
説明していきましょう!!

sendMail()関数について

メールの送信自体は関数MailApp.sendMail()の引数部分に3つの要素を入れてあげれば簡単に使用できます。
1つ目・・・送信先の宛先(相手のメールアドレスを入力します。)
2つ目・・・メールの件名(シンプルに内容が分かりやすいものがいいですね!!)
3つ目・・・メールの本文(ビジネスマナーをしっかりと、「更新したよー」とか書いてはいけません。)
以上の様に使い方自体は簡単ですが、例えばこの内容を直接書き込むと
MailApp.sendMail(“t-kobayashi@emplos.biz”,”テストファイルについて”,”○○部長\nお疲れ様です。小林です。\n表題のファイル【テストファイル】内の【勤務報告1月】シートを更新しました。\nご確認いただけますようよろしくお願い致します。”)
・・・長い!!1つの関数でこれは長すぎます!!
ですので3つの要素を一旦変数に代入します。

sendMail()関数をすっきりさせる

先程の書き方では関数内がごちゃごちゃしますので、3つの要素を変数に代入します。
1つ目・・・var dAddress = “t-kobayashi@emplos.biz“;
変数dAddress宛先のメールアドレスを代入します。
2つ目・・・var subject = “テストファイルについて“;
変数subject件名を代入します。
3つ目・・・var content = “○○部長\nお疲れ様です。小林です。\n表題のファイル【テストファイル】内の【勤務報告1月】シートを更新しました。\nご確認いただけますようよろしくお願い致します。“;
変数content本文を代入します。
そして関数sendMail()の引数には、変数を代入します。そうすると
MailApp.sendMail(dAddress,subject,content);
関数がすっきりしましたね。
ただし今度は3つ目の変数contentがごちゃごちゃしまう事態に・・・

長文を読みやすくするポイント

今度は読みにくくなってしまった変数contentを変更していきます。
ところで、変数contentの中にちょいちょい「\n」こんな文字が入っているのに気が付かれたでしょうか?
これは改行を意味し、この「\n」の部分で文章が改行されます
これをしないと文章が一続きになってしまい、読みずらくなってしまうので適度に改行していきましょう。
更に、1行ずつ文章を追加する形にするともっと読みやすくなります。
どんな書き方かというと・・・
var content = “○○部長\n”
content += “お疲れ様です。小林です。\n”
content += “表題のファイル【テストファイル】内の【勤務報告1月】シートを更新しました。\n”
content += “ご確認いただけますようよろしくお願い致します。”;
+=と書くと変数に文章を追加することが出来ます。この例では改行したい部分毎に追加してみました。

さらに使いやすく

この状態でも使うことが出来ますが、本文の【テストファイル】や【勤務報告1月】の部分はメールを送信する度に
内容を書き換える必要があります。
これでは自動とは言い切れません。なので現在開いているファイル名やシート名自動で取得し、書き換えなくてもいいように変更します。

ファイル名及びシート名の取得

現在開いているファイル名の取得は「SpreadsheetApp.getActive().getName()」この関数で簡単に取得できます。
これを使用し、変数failNameへファイル名を代入しています。
現在開いているシート名も同様に「SpreadsheetApp.getActiveSheet().getName()」この関数で取得できますので、
変数sheetNameへ代入します。
そしてこれを使用し、【テストメール】→【failName】、【勤務報告1月】→【sheetName】へと書き換えます。
こうしておくと、毎月コードを書き変えなくてもメールの送信が出来ます。
あとはこのコードを以前に行ったトリガーを使って自動化すれば毎回メールを作成し、送信する作業を自動化することが出来ます。

このコードを実行してみると
mail2
無事にメールが来ましたね。開くと内容はこの様になっています。
mail1
ファイル名とシート名がちゃんと編集中のものになっていますね。改行もされています。
これで自動メール送信が完成です。
色々応用がききますので、便利に使って下さい!!

メインメニュー

ブログメニュー

タグクラウド

おすすめ記事

【動画】エンプロスが未経験でも医療事務員を輩出できる理由
【動画】エンプロスが未経験でも医療事務員を輩出できる理由