
photo credit: Idyll Ours via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
引き続きGoogle Apps Scriptで簡単メールマガジンシステムを作成しています。
ドキュメント、スプレッドシート、GmailなどGoogleサービスを連携させればできちゃいますからね、すごいですよね。
さて、前回はGoogleドキュメントの文書をGoogle Apps Scriptで取得する方法についてお伝えしました。

今回は、スプレッドシートのリストの情報をもとに、ドキュメントで作成したメール本文内の社名、姓名などを差し込みして出力する方法についてお伝えします。
では、よろしくお願いいたします!
スプレッドシートの内容でドキュメントの内容を書き換えてログに出力
今回のゴールについて整理をしていきますね。
まず、Googleドキュメントでメール本文のベースとなる文書を用意しておきます。
{社名}、{姓}、{名}の箇所をスプレッドシートの情報に合わせて差し替えていくことになります。
次にスプレッドシートはこちらです。
リストは2件あり、A列から順番に社名、姓、名を記載しています。メールアドレスはまだ空欄です。
今回は、それぞれの宛先向けに差し替えたメール本文をログに出力するというスクリプトを書いていきたいと思います。
社名、姓名を差し替えてログに出力するスクリプト
今回は前述のスプレッドシートからスクリプトエディタを開いて下記スクリプトを書きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function insertName(){ /* スプレッドシートのシートを取得と準備 */ var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 /* ドキュメント「メール本文テスト」を取得する */ var docTest=DocumentApp.openById("XXXXXXXXXXXX"); //ドキュメントをIDで取得 var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得 /* シートの全ての行について社名、姓名を差し込みログに表示*/ for(var i=2;i<=rowSheet;i++){ var strCompany=mySheet.getRange(i,1).getValue(); //社名 var strSecond=mySheet.getRange(i,2).getValue(); //姓 var strFirst=mySheet.getRange(i,3).getValue(); //名 var strBody=strDoc.replace(/{社名}/,strCompany).replace(/{姓}/,strSecond).replace(/{名}/,strFirst); //社名、姓名を置換 Logger.log(strBody); //ドキュメントの内容をログに表示 } } |
まず、3行目から9行目までは、スプレッドシートのシートとその最終行数、またドキュメントの内容を取得する部分です。
別の記事でお伝えしています。スプレッドシートについてはこちら。

ドキュメントについてはこちらをご覧ください。

replaceで文字列を差し替える
今回のキモはこのreplaceの部分です。
replaceメソッドは文字列中の特定のパターンと一致する文字列を置換文字列と置換します。
このパターンというのは正規表現という書き方で記述する必要があるのですが、スラッシュで囲います。
今回はいずれの場合も完全一致ですので、「/{社名}/」「/{姓}/」「/{名}/」と単純にスラッシュで囲うだけでOKです。
またreplaceメソッドは
1 2 3 |
var strBody=strDoc.replace(/{社名}/,strCompany); strBody=strBody.replace(/{姓}/,strSecond); strBody=strBody.replace(/{名}/,strFirst); |
と書いても良いのですが
1 |
var strBody=strDoc.replace(/{社名}/,strCompany).replace(/{姓}/,strSecond).replace(/{名}/,strFirst); //社名、姓名を置換 |
と連続して一行につなげて記述することができます。このような書き方をメソッドチェーンと言いますが、こちらのほうが若干スッキリ書けますね。
実行してログを確認する
このスクリプトを実行してみます。初回はドキュメントとスプレッドシートへのリクエストの許可が必要ですので、快く許可してあげて下さい。
Ctrl + Enter でログを見てみますと
2件のメッセージが出力されています。それぞれ問題なく社名、姓名が差し込みされていますね。
まとめ
これでドキュメントの本文をベースに、スプレッドシートのリスト宛を想定して宛名を差し込みして出力することができました。
replaceメソッドを使えば本文への社名、姓名などの差し込みも簡単です。
次回はいよいよスプレッドシートにメールアドレスも記入してGmailにメッセージを送っていきたいと思います。

どうぞお楽しみに!
連載目次:Google Apps Scriptでメルマガシステムを作っちゃおう!
Google Apps ScriptでGmail、スプレッドシート、ドキュメントを連携させて操作することでメルマガシステムが簡単に実現できます。思ったより2割くらい簡単にできますよ。ちなみに無料です…さすがGoogle。- 初心者でも簡単!Google Apps ScriptでGmailを操作してメールを送る方法
- 初心者でも簡単!Google Apps Scriptでドキュメントを取得して表示する方法
- Google Apps Scriptでスプレッドシートのリストをもとに宛名を差し込んだメール本文を作る
- たったの38行!Google Apps Scriptで超簡易メルマガ配信システム
- 名刺管理アプリCAMCARDの連絡先リストをスプレッドシートに取り込む
- 【GAS】名刺管理アプリの出力データを活用してメルマガ配信リストを自動更新する
- Google Apps Scriptのスプレッドシート読み書きを格段に高速化をする方法
- Google Apps Scriptのメルマガ配信リスト自動更新スクリプトを高速化する
- Google Apps Scriptでスプレッドシートに独自のメニューを追加する方法
投稿者プロフィール
- 株式会社プランノーツ 代表取締役
-
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。
コメント