3
4

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 5 years have passed since last update.

GoogleSpreadsheetを使ってメーリングシステムを構築する

Posted at

できること

・大勢の相手にGmailでメールを個別送信することができる。(いわゆる一斉送信にはならない。)
・メール文面を相手によって変えることができる。(相手の名前を文面中に組み込むなど。)

1.Spreadsheetの準備

GoogleSpreadsheetで新しいシートを作成。写真のように送信する相手のアドレスや名前など、送信するメールで個別に変化させたいデータを表形式で入力していく。スクリーンショット 2018-12-31 12.29.58.png
左上の「ツール」バーから「スクリプトエディタ」を選択し、別画面でGoogle Apps Scriptを開く。

2.Documentの準備

GoogleDocumentで送りたいメールの本文を作成します。
そのとき、{イベント名}など、送信するメールで個別に変化させたいデータを変数形式で指定していきます。スクリーンショット 2018-12-31 13.05.08.png

3.Google Apps Scriptの編集

開いたGoogle Apps Scriptに下記のコードをコピペする。


function sendMail(){
 
  /* スプレッドシートのシートを取得と準備 */
  var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
  
  /* ドキュメント「メール本文テスト」を取得する */
  var docTest=DocumentApp.openById("ID"); //ドキュメントをIDで取得
  var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
  
  /* メール表題、fromアドレス、差出人名を準備 */
  var strSubject="hogehoge株式会社のイベントにご参加の皆様へ"; //表題
  var strFrom="hogehoge@gmail.com"; //From
  var strSender="hogehoge株式会社"; //差出人
  
  /* シートの全ての行について社名、姓名を差し込みログに表示*/
  for(var i=2;i<=rowSheet;i++){
    
    var strEvent=mySheet.getRange(i,1).getValue(); //イベント名
    var strName=mySheet.getRange(i,2).getValue(); //名前
    var strTo=mySheet.getRange(i,3).getValue(); //相手のアドレス
    
    var strBody=strDoc.replace(/{イベント名}/,strEvent).replace(/{名前}/,strName); //社名、姓名を置換
 
    /* メールを送信 */
    GmailApp.sendEmail(
      strTo, //相手のアドレス
      strSubject,  //表題
      strBody, //本文
      {
        from: strFrom, //fromアドレス
        name: strSender //差出人
      }
    ); 
  }
}

以下、編集のためのcode解説

var docTest=DocumentApp.openById("ID"); //ドキュメントをIDで取得

3で用意しておいた変数設定したメール文面を取得します。DocumentのURLに載っているID(例、https://docs.google.com/document/d/<ID>/editの場合、<ID>の部分)をコピペしてコードのIDの部分に貼り付ける。

for(var i=2;i<=rowSheet;i++)

コードに紐付いているSpreadsheetの行数をiとして設定し、2行目から尻の行までを繰り返しデータを取得→メール送信のアクションを繰り返します。

var strEvent=mySheet.getRange(i,1).getValue(); //イベント名

ここではstrEventという変数を設定し、その変数に(i,1)のセルの情報を入れています。例えば一回目の処理ではi=2なので、(2,1)のセルの情報が入ります。strName,strToも同じです。変数を増やしたい場合は、Spreadsheetの列、変数を増やしましょう。

var strBody=strDoc.replace(/{イベント名}/,strEvent).replace(/{名前}/,strName);

strBodyという本文の変数を作っています。この際、strDocという先ほど指定したDocumentからの文章のうち、指定した変数を入れています。例えば、GoogleDocumentで{イベント名}と指定したところには、strEventで取得した変数が入れられます。strNameも同様です。

GmailApp.sendEmail

Gmailを送信します。そのとき、strToに入れられたメールアドレスに、指定したタイトル、本文で送られます。

関数の実行

メール文面、変数設定などを終えたらいよいよメールの送信です。
GoogleAppsScriptの左上の「ファイル」タブからコードを保存した上で、「実行」タブから「関数を実行」、「sendMail」を指定します。すると、Gmailにアクセスするための承認が要求されるため、許可を確認します。スクリーンショット 2018-12-31 13.11.16.png
確認しようとすると、いかにも危なそうな確認画面が表示されますが、左下の「詳細」を押して、「『〜』に移動」を押し、承認します。
スクリーンショット 2018-12-31 13.11.28.png
スクリーンショット 2018-12-31 13.11.51.png
承認を終えるとsendMail関数が実行され、メールが送信されます。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?