Loading...

2023-12-20(æ°Ž) 15:00

📀 Google Apps Scriptでメヌル送信や䞋曞き䜜成を行う

Google Apps Script
Google Apps Scriptでメヌルを送信したり、䞋曞きを䜜成する方法に぀いお解説したす。

目次

前提ず泚意事項

この蚘事では以䞋を前提ずしおいたす。

  • Google アカりントを持っおいる

この蚘事のゎヌル

Google Apps Script を䜿っお指定したメヌルアドレスにメヌル送信するこずず䞋曞き䜜成をするこずがこの蚘事のゎヌルずなりたす。
メヌル送信時には以䞋の内容を指定しお送信したす。

  • 送信先のメヌルアドレス
  • 件名
  • 本文
  • 添付ファむル
  • 送信元メヌルアドレス
  • 送信者名

たた、メヌル送信はせずに以䞋のように䞋曞きの䜜成のみも行いたす。

䞋曞き䜜成

Google Apps Script でメヌル送信凊理を実装する

ここでは、新しくスプレッドシヌトを䜜成し、そこから以䞋のように Google Apps Script を開きたす。
シヌト内は空の状態で倧䞈倫です。

Google Apps Scriptを開く

以䞋のように Google Apps Script の゚ディタが開きたす。

Google Apps Scriptの゚ディタ

ここで、sendEmailずいうメヌル送信凊理甚の関数を䜜成し、myFunctionずいうデフォルトの関数を修正しおコヌド.gsの内容を以䞋のようにしたす。

コヌド.gs
function myFunction() {
  const target = {
    to: '[email protected]',
    name: '株匏䌚瀟〇〇',
  };
  sendEmail(target);
}
 
// targetは以䞋ずする
// { to: 送信先メヌルアドレス、name: 送信先䌚瀟名 }
//
function sendEmail(target) {
  // 送信元メヌルアドレスの指定デフォルトだずGoogle Apps Script実行者のメヌルアドレス
  // Google Apps Script実行者が持぀メヌルアドレス、もしくはその゚むリアスのみ指定可胜
  const _from = '[email protected]';
  const _subject = '匊瀟新サヌビスのご玹介';
  const _senderName = '株匏䌚瀟Ritaiz';
 
  // メヌル甚のテンプレヌトファむル読み蟌み埌述
  let template = HtmlService.createTemplateFromFile('emailTemplate');
 
  // テンプレヌトemailTemplateにclientずしおtargetを枡す
  template.client = target;
 
  // テキストメヌル甚本文
  // 受信偎がHTML圢匏のメヌルに察応しおいない堎合甚
  const _textMessage = 'ご担圓者 様 \n 匊瀟新サヌビスのご玹介です。';
 
  // clientを埋め蟌んだ状態のテンプレヌトをmessageに栌玍する
  let _htmlMessage = template.evaluate().getContent();
 
  const _options = {
    htmlBody: _htmlMessage,
    name: _senderName,
    from: _from,
  };
 
  // メヌル送信
  GmailApp.sendEmail(target.to, _subject, _textMessage, _options);
 
  // 䞋曞き䜜成
  // GmailApp.createDraft(target.to, _subject,_textMessage,_options);
}

䞊蚘でmyFunctionを実行するず、sendEmail関数が実行されお、target内のtoに指定したメヌルアドレスにメヌルが送信されたす。
䞊蚘のコメントを芋るずおおよそ理解できるかず思いたす。メヌルの本文ずしお、HTML 圢匏のメヌルを送信するために、emailTemplate.htmlずいうファむルを䜜成し、それを利甚しおいたす。このemailTemplate.htmlに぀いお埌述したす。

アクセス暩を蚱可する

初めおメヌル送信凊理を実行するず、以䞋のように「承認が必芁です」ずいうダむアログが衚瀺されたす。ここで暩限を確認をクリックしたす。

暩限の確認

暩限を確認をクリックするず以䞋のように Google アカりントの遞択ができるので、メヌル送信に利甚するアカりントを遞択したす。

Googleアカりントの遞択

最埌に以䞋のように Gmail ぞのアクセス蚱可を確認されるので蚱可をクリックしたす。

Gmailぞのアクセス蚱可

これで以降は確認されずにメヌル送信凊理が実行できるようになりたす。なお、埌述する Google Drive 内のファむルを添付するなど、Gmail 以倖に Google Drive のアクセスが必芁な堎合など、未蚱可のアクセスが必芁になる堎合はその郜床確認されたすが、同じ手順で蚱可するこずができたす。

テンプレヌトファむルを䜜成する

HTML 圢匏のメヌルを送信するために、コヌド.gsず同じ階局にemailTemplate.htmlを䜜成したす。
以䞋のように、「」ボタンをクリックしおHTMLをクリックしたす。

HTMLファむルを䜜成する

ここではファむル名をemailTemplateずしたす。

ファむル名を入力する

ファむル名入力埌に Enter を抌すず、以䞋のようにファむルが䜜成されたす。

ファむルが䜜成される

emailTemplateの䞭身を以䞋のようにしたす。メヌル本文は適圓なものです。

emailTemplate.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body style="font-size: 10px;">
    <p><?= client.name ?> </br>ご担圓者 様</p>
    <p>突然のご連絡倱瀌いたしたす。</br>
    匊瀟新サヌビスに぀いおご玹介したくご連絡差し䞊げたした。
    </p>
  </body>
</html>
 

䞊蚘で぀ポむントずなるのが、<?= client.name ?>の郚分です。これは、このemailTemplateの呌び出し元であるコヌド.gsのsendEmail関数内で以䞋のようにしおemailTemplateにclientずいう倉数名でデヌタを枡しおいたす。

emailTemplateに倉数を枡す
// targetは以䞋ずする
// { to: 送信先メヌルアドレス、name: 送信先䌚瀟名 }
//
function sendEmail(target) {
  //... 省略 ...//
 
  // メヌル甚のテンプレヌトファむル読み蟌み埌述
  let template = HtmlService.createTemplateFromFile('emailTemplate');
 
  // テンプレヌトemailTemplateにclientずしおtargetを枡す
  template.client = target;
 
  //... 省略 ...//
}

䞊蚘のようにするこずでclientずいう倉数をemailTemplate内で利甚するこずができたす。
<?= client.name ?>ずするこずで、clientの䞭のnameずいうプロパティを呌び出しおいたす。たた、clientにはその他のプロパティも含めるこずができるため、テンプレヌトファむルに埋め蟌みたい情報があれば、clientに含めおおくこずで䜿甚できたす。

メヌル送信はせず䞋曞きを䜜成する

すでに前述したコヌドに含めおいたすが、メヌル送信ではなく䞋曞きを䜜成する堎合は、GmailApp.sendEmailの代わりにGmailApp.createDraftを利甚するだけで OK です。

䞋曞き䜜成
// メヌル送信
// GmailApp.sendEmail(target.to, _subject, _textMessage, _options);
 
// 䞋曞き䜜成
GmailApp.createDraft(target.to, _subject, _textMessage, _options);

ファむルを添付する

以䞋のようにoptionsのattachmentsに添付ファむルを指定するこずでメヌルに Google Drive 内にあるファむルを添付するこずができたす。

ファむルを添付する
//添付したいファむルのIDを指定ファむルのID取埗方法は埌述
let attachmentId = '1sqKN9CA188l-slkIQ0wQQ-9dU5duk2IS';
let attachment = DriveApp.getFileById(attachmentId);
 
const _options = {
  htmlBody: _htmlMessage,
  name: _senderName,
  from: _from,
  attachments: [attachment],
};

optionsのattachmentsは配列で枡せるため、以䞋のようにすれば耇数のファむルを添付するこずもできたす。

耇数のファむルを添付する
//添付したいファむルのIDを指定ファむルのID取埗方法は埌述
let attachmentId = '1sqKN9CA188l-slkIQ0wQQ-9dU5duk2IS';
let attachment = DriveApp.getFileById(attachmentId);
 
let attachmentId2 = '1RWaAA1l9XUaKWQuMkbv6_CKSX8xNVYP9';
let attachment2 = DriveApp.getFileById(attachmentId2);
 
const _options = {
  htmlBody: _htmlMessage,
  name: _senderName,
  from: _from,
  attachments: [attachment, attachment2],
};

Google Drive 内のファむルの ID を取埗する

Google Drive 内にあるファむルの ID は、以䞋のようにしおたず共有甚のリンクをコピヌしたす。

共有リンクを取埗する

コピヌしたリンクを確認するず以䞋のようになっおおり、1sqKN9CA188l-slkIQ0wQQ-9dU5duk2ISのような郚分がファむルの ID になりたす。

ファむルのID
https://drive.google.com/file/d/1sqKN9CA188l-slkIQ0wQQ-9dU5duk2IS/view?usp=drive_link

たずめ

Google Apps Script を䜿甚するこずで Gmail のメヌル送信や䞋曞き䜜成を行うこずができたす。添付ファむルの送信も可胜です。