1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

内容の異なるメールを一括作成&下書き保存 (Gmail/Google App Script使用)

Last updated at Posted at 2022-02-12

はじめに

複数人に対して微妙に内容の異なるメールを送信する、という定期タスクがあるという方、結構いらっしゃるのではないでしょうか。私もその一人です。

メーラーのテンプレート機能を使ってコピペなどの手作業の回数を減らすことができました。が、更なる省力化の方法はないか探していたところ、以下のブログにあるサンプルコード を見つけました。

こちらのサンプルコードを参考にして自動化の仕組みを作成したところ、情報を更新する場所が一か所に減り、クリック数も数回に減り、メール作成作業をかなり簡略化できました!

本記事では、コーディング全般初心者であり、更にGoogle App Script (以下、GAS) を扱うのも初めてだった筆者が、こちらのサンプルコードを修正・アレンジしようとした際に少し悩んだ箇所を中心にまとめます。

公式ドキュメントは難しくて読みこなせないけどGASに挑戦してみたいと思った(私のような)方の参考になれば幸いです。

※体系的に学習をしていないまま本記事を書いているため、不正確な記述がありましたらコメント欄にてご指摘いただけますと嬉しいです。

前提条件

  • Gmailのアカウントを持っていること
  • Javascriptを読んだり書いたりできること(超初歩でOK)

GASでやりたかったこと

  • 月例のZoom集会の案内メール文作成の簡略化
    • 開催日をメールタイトルに入れたい
    • Zoomの接続先情報(毎月変更)をメール本文に入れたい

メールイメージ

タイトル

2月集会 19日11:00からです

本文

〇〇さん

こんにちは。
今月の集会のZoomのアドレスをお送りします。
よろしければご参加ください。

---------
Zoomミーティングに参加する
https://.....

ミーティングID: xxx xxxx xxxx
パスコード: xxxxxx
---------

ブログのサンプルコードからの主な変更点

GASの自動化の仕組みは以下2つのパーツから構成されます。

  1. メールタイトル・本文のひな型と、そこに流し込みたい情報のリストが書かれたスプレッドシート 👉ブログの【● Googleスプレッドシートを作成する】参照
  2. Google App Script 👉ブログの【● GASを編集する】参照

初心者の筆者が時間かかってしまったポイントをそれぞれのパーツごとに紹介します。

1. スプレッドシート側

変数の定義(追加)

  • 開催月
  • 開催日
  • Zoomの接続先情報

シート名の変更

  • (デフォルトの「Sheet1」から)"下書き作成ツール"に変更
    • (GAS内のシート名に合わせる形。ここに気づくことができず少々ハマりました。。)

2. GAS側

getRangeで指定しているセルを修正

ブログのサンプルでは、

  • C2セルにメールの件名
  • C3セルにメール本文のフォーマット
  • B列に名前、C列にメールアドレス、D~E列にメールに流し込む文章のリスト

が配置されている前提でコードが書かれているため、アレンジした場合getRange関数の引数の修正が必要です。

getRange(row, column)のrowが行を表し、columnが列を表します。getRange(2,1)はA2セルを指します。詳細はこちらをご覧ください。

CCに関する箇所を削除

CCに入れて発信する必要がない場合においては、以下2箇所を削除(修正)します。

//CC用のメールアドレスを設定
//複数設定したい場合はカンマ区切りで指定してください
const CC = "****@****.co.jp";

以下は第3引数(オプション)を削除。

//取得した内容をGmailで下書き作成
GmailApp.createDraft(to, subject, message, {cc: CC});

追加した変数の取得

スプレッドシートのF2セル(2行目, 6列目)に集会の開催月を記入した場合、以下を追記。

//開催月を取得
const month = sheet.getRange(2, 6).getValue();

開催日、Zoomの接続先情報も同様に取得します。

メールタイトルの変更

スプレッドシートのF5セル(5行目, 6列目)にメールタイトルのフォーマット(ここでは「{開催月}月集会 {開催日}日11:00からです」)を記入した場合、以下のコードで置換。

const subject = sheet.getRange(5, 6).getValue()
.replace('{開催月}',month)
.replace('{開催日}',day);

1行目と2行目の行末にセミコロンをつけないことに注意。
(ここにエラーが出たときにセミコロンをすべての行末につけてしまっていることが原因だとなかなか気づけませんでした。。)

終わりに

このブログのGASサンプルコードの良い点は、「下書き保存」までで終わるところだと思います。バグの入ったメールが飛んでしまい慌ててしまうということもないので、GASを試してみたいという方には最適だと思います。

再度、ブログへのリンクを記載します。注意点もご覧になってください。

ブログ執筆者の@mi_na_to_8さま、参考になるサンプルコードを公開いただきありがとうございました!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?