やりたいこと&その理由
インサイドセールスでアポイントが取得できたお客様に対して、当日の朝にリマインドのメールを送るようにしている。毎朝同じようなメールを送信しているので、メールを作成している時間があれば1件でも多く電話をしたり、見込み先のリストを抽出する時間に当てたいので、自動化することにした。
以下の記事で書いていたスクリプトを若干リファクタリングしつつ、お客様へのリマインドメールを生成してみる。
【営業向け】インサイドセールスでアポ取得できたときのお客様へのメールを自動生成する
実装方法
1: 当日の予定を配列で取得
2: 配列の中から、お客様との商談予定のみ取得
3: 2で取得した情報を利用して、リマインドメールの下書きを作成
完成系(gasのスクリプト)
以下が完成形
gas.js
const calendarId = "hiroshige.okuno@wealth-park.com";
function createRemindMailForToday() {
const calendar = CalendarApp.getCalendarById(calendarId);
var events = calendar.getEventsForDay(new Date());
events.map(function(event){
if(event.getTitle().match(/【確定】/) && event.getTitle().match(/WEBお打合せ/) && event.isOwnedByMe()){
var emailInformation = getInformationForEmail(event);
createEmailDraft(emailInformation,"faceToFaceMtg");
}else if(event.getTitle().match(/【確定】/) && event.getTitle().match(/往訪/) && event.isOwnedByMe()){
var emailInformation = getInformationForEmail(event);
createEmailDraft(emailInformation,"webMtg");
}
});
}
function getInformationForEmail(event){
var dayOfWeekStr = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"];
var titleWithArr = event.getTitle().split(" ");
var companyName = titleWithArr[1];
var name = titleWithArr[2];
var mtgMonth = event.getStartTime().getMonth();
var mtgDate = event.getStartTime().getDate();
var mtgHour = event.getStartTime().getHours();
var mtgMinutes = event.getStartTime().getMinutes();
if(mtgMinutes == 0){
mtgMinutes = "00";
}
var mtgDay = dayOfWeekStr[event.getStartTime().getDay()];
var toEmail = event.getGuestList()[0].getEmail();
var ccEmail = 'saasbiz@wealth-park.com';
var subject = name + ':本日のお打合せ日時に関しまして/WealthPark奥野';
var mtgUrl = event.getLocation();
return {
"companyName": companyName,
"name": name,
"mtgMonth": mtgMonth,
"mtgDate": mtgDate,
"mtgHour": mtgHour,
"mtgMinutes": mtgMinutes,
"mtgDay": mtgDay,
"toEmail": toEmail,
"ccEmail": ccEmail,
"subject": subject,
"mtgUrl": mtgUrl
};
}
function createEmailDraft(emailInformation,mtgType){
var template_index = HtmlService.createTemplateFromFile(mtgType);
template_index.arr = [emailInformation.companyName,
emailInformation.name,
emailInformation.mtgMonth + 1,
emailInformation.mtgDate,
emailInformation.mtgDay,
emailInformation.mtgHour,
emailInformation.mtgMinutes,
emailInformation.mtgUrl];
var html = template_index.evaluate().getContent();
GmailApp.createDraft(emailInformation.toEmail, emailInformation.subject, html,{cc: emailInformation.ccEmail, htmlBody: html});
}
完成系(お客様先往訪時のメール文)
往訪の場合と、WEBお打合せの場合と、利用するEmailを別にしたいので2種類のHTMLを用意
faceToFaceMtg.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<br>
<?= arr[0] ?><br>
<?= arr[1] ?><br>
<br>
いつも大変お世話になっております。<br>
わたしでございます。<br>
<br>
先日はお電話でのご対応、<br>
誠にありがとうございました。<br>
<br>
改めまして、本日、<br>
以下のお時間でお打合せの時間をいただければと存じます。<br>
<br>
日程:<br>
<?= arr[2] ?>月<?= arr[3] ?>日(<?= arr[4] ?>) <?= arr[5] ?>:<?= arr[6] ?>~<br>
<br>
お打合せ方式:<br>
貴社へお伺いいたします<br>
<br>
お打合せ場所:<br>
<?= arr[7] ?><br>
<br>
<br>
それでは以上となりますが、 <br>
今後とも何卒よろしくお願いいたします。<br>
<br>
</body>
</html>
完成系(WEBお打合せ時のメール文面)
webMtg.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<br>
<?= arr[0] ?><br>
<?= arr[1] ?><br>
<br>
いつも大変お世話になっております。<br>
わたしでございます。<br>
<br>
先日はお電話でのご対応、<br>
誠にありがとうございました。<br>
<br>
改めまして、本日、<br>
以下のお時間でお打合せの時間をいただければと存じます。<br>
<br>
日程:<br>
<?= arr[2] ?>月<?= arr[3] ?>日(<?= arr[4] ?>) <?= arr[5] ?>:<?= arr[6] ?>~<br>
<br>
会議URL:<br>
<a href = "<?= arr[7] ?>"><?= arr[7] ?></a><br>
<br>
それでは以上となりますが、 <br>
今後とも何卒よろしくお願いいたします。<br>
</body>
</html>
トリガーの設定
最後に以下のキャプチャのようにトリガーをすれば、終了。
これで毎朝リマインドメールが自動で生成されるので、月間のコール数が10は増えたんじゃなかろうか。