見出し画像

【未経験でも出来る!】GoogleAppsScript(GAS)|スプレッドシート×Gmailでメール作成を自動化 -vol.5-

プログラミング未経験でも簡単に習得できるGoogle Apps Script👩‍💻🔰

今回はスプシ×Gmailでメール作成を自動化するスクリプト紹介の第五弾💡
完了済みデータはスキップするよう前回のスクリプトを進化させます🙆‍♀️

◎動画で紹介したスクリプト

function myFunction(){
 
 //スプレッドシートを取得
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();
 
 //データを取得
 var rows = sheet.getLastRow()-2; //カラム行は除く
 var columns = sheet.getLastColumn();  
 var range = sheet.getRange(3,1,rows,columns);
 var datas = range.getValues();
 
 //配列を宣言
 var array = [];  
 
 //データ(各行)に対して繰り返し
 datas.forEach(function(data){
 
   try{
   
     //各列からデータを抜き出し
     var category = data[0];
     
     var recipient = data[1];
     var cc = data[2];
     var bcc = data[3];
     
     var subject = data[4];
     var body = data[5];
     
     var folderUrl = data[6];
     var attachments = []; //添付ファイルを格納する配列を生成
     
     var status = data[7];
     
     //完了済みデータに対する処理
     if(status === "完了"){
       
       //スプシ記載するデータを変数に代入
       var result = "完了";
       var message = "";
     
     } else { //未完了データに対する処理
     
       //フォルダurl記載がある場合はフォルダ内すべてのファイル情報を取得
       if(folderUrl !== ""){
         var id = folderUrl.replace("https://drive.google.com/drive/folders/","");
         var folder = DriveApp.getFolderById(id);
         var files = folder.getFiles();
         while(files.hasNext()){
           var file = files.next();
           attachments.push(file); //ファイル情報を配列に格納
         }
       }
       
       //メールのoptionsを宣言
       var options = {
         cc:cc,
         bcc:bcc,
         attachments:attachments,
       }
       
       //メールを下書き作成or送信
       if(category === "下書き"){
         GmailApp.createDraft(recipient, subject, body, options); //下書き作成
       } else if(category === "送信"){
         GmailApp.sendEmail(recipient, subject, body, options); //送信      
       }
       
       //スプシ記載するデータを変数に代入
       var result = "完了";
       var message = "";
     }
       
   } catch(e) {
      
     //スプシ記載するデータを変数に代入 
     var result = "error";
     var message = e;
     
   } finally{
     
     //シートに書き込むデータを配列に格納
     array.push([result,message]);
     
   }
   
 });
 
 //データ記載する範囲を取得
 var outputRange = sheet.getRange(3,8,rows,2);
 
 //範囲にデータを書き込み
 outputRange.setValues(array);
 
}

最新講座はどんどんYoutubeにアップしていくので、ぜひチャンネル登録お願いします🦸‍♀️!





この記事が気に入ったらサポートをしてみませんか?