LoginSignup
2
1

More than 3 years have passed since last update.

【書きなぐり】今更ですが、GASでメール送りませんか?

Last updated at Posted at 2019-06-09

はじめに

この記事を読む対象者 (面倒であれば先に「実際の流れ」を見てください)

  • プログラミング初心者でGASを触ったことのないが何か使ってみたい人
  • 業務の効率化をしたい人

メリット

  • GASでのメール送信ができる
  • 企業からの自動送信メールの仕組みがわかる
  • 実際に作ることでGASに興味がわく

最終目的

このようなメールを送ることが到達点です。
(文章の内容は深夜のテンションで書いたのでご了承ください)
スクリーンショット 2019-06-10 1.26.45(2).png

実際のスプレッドシートとGASコード

スクリーンショット 2019-06-10 1.48.46.png

スクリーンショット 2019-06-10 0.42.42(2).png

変数の準備


var spreadsheet = SpreadsheetApp.openById('IDを入れてね(IDはURLのところにあるyo)');//SpreadSheetファイル『Qiita』をIDから取得する
var sheetName = '送信用';//SheetNameに「Qiitaデモ」という文字列を代入することでシートを指定できる
var sheet = spreadsheet.getSheetByName(sheetName);//シート名からSheetを取得
var got_data = sheet.getDataRange().getValues();//Sheetからデータを取得
var content = got_data[0][5];//本文の内容をセルF1に入れている
var signature = '';//触って欲しくない文字はコード上に描くといいかも
    signature += '_____________________________________________' + '\n';
    signature += 'ここに署名を無理やり入れているYo ♪♪'+ '\n';
    signature += '_____________________________________________'+ '\n';

var ~~~ 変数 (コメントアウトと同じような説明なので折りたたみ)

この部分では関数を実行する前に変数を作っています。『初登場の変数をイタリック、2度目以降は太字で記入』
spreadsheet =SpreadsheetApp.openById()
「IDを使って使用するスプレッドシートファイルの指定&開く(IDの位置はググってみてください)
sheetName = '送信用'
sheet = spreadsheet.getSheetByName(sheetName)
シートの名前から一枚のシートを取得する(太字は変数なのでコードと見比べてください)
got_data = sheet.getDataRange().getValues()
シート全体から2次元配列でデータを読み取る
content = got_data[0][5]//本文の内容をセルF1に入れている
配列上の数字[]は0から、シート上の数字()は1から数え始める(今回は配列[]なので0から) ←割と重要

関数(fanction)


function GoGoGmail(){
}

実際に行なっている関数の部分。(言葉足らずなので編集リクエストお願いします)

for の処理


//ここの部分が難しいかも(少なくとも私にとっては).for分のカッコ内はイメージは下の通り 
//(iを列の最大の長さとしますよ:iは必ず0より大きいですよ:回すたびにiを1ずつ減らして行きますよ)
for(var i = got_data.length-1; i>0; i--){

}

if の処理

//アドレスあり && 名前あり && 送信日なし && 結果なし  → 実行
    if(emailAdress != "" && Name != "" && got_data[i][5]=="" && got_data[i][6]==""){

== 同じ場合にtrue
!= 異なる場合にtrue
"" 空白

Gmail を送る処理

//実際に送るメソッド
GmailApp.sendEmail(
  emailAdress,//送信先
  'テスト', //件名
  body, //本文
   {
    //bcc: 'xxx@gmail.com', ← 人様に迷惑がかかる恐れがあるのでコメントアウト
    name:'紀伊田 修一',
    form:'yyy@gmail.com',
    replyTo:'zzz@gmail.com'
   }
 );

//『結果』に'success'を記入
sheet.getRange(i+1,5).setValue('~success~');

GmailApp.sendEmail(アドレス,送信先,件名,本文,{オプション});
オプションでbcc,ccc,差出人お名前、送信元のアドレス、デフォルトの返信先の設定 などが行える。
スクリーンショット 2019-06-10 1.26.47(2).png

try~catch エラーの対応


        try{ 
            GmailApp.sendEmail(
            emailAdress,
            'テスト', 
            body, 
            );
            //『結果』に'success'を記入
            sheet.getRange(i+1,5).setValue('~success~');

       }catch(e){
            sheet.getRange(i+1,5).setValue('!!error!!');      
            }

try{}~catch(){}
tryが成功した時に特定のセルにsuccessを記入
エラーが出た場合catchの処理を行う

実際の流れ(デモなので実際の届くようなメールアドレスではありません)

スプレッドシートの動き
実行前
スクリーンショット 2019-06-10 1.14.39.png
成功
スクリーンショット 2019-06-10 1.14.55.png
失敗
スクリーンショット 2019-06-10 1.15.23.png
メールアドレスの表記にミスがある場合はエラーという文字を入れている。
そもそも相手の名前がない場合は実行されていない(if参照)

メールのイメージ
スクリーンショット 2019-06-10 1.26.45(2).png
スクリーンショット 2019-06-10 1.26.47(2).png

終わりに

今回はGASを使ったメールの方法を簡単かつ少し雑にまとめました。
私もプログラミングを始めたばかりなのでミスがあれば指摘をお願いします。

次回はこのGASに置けるクラスとメソッドをまとめようと考えています。

最後まで見ていただきありがとうございます。

2
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
2
1