質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.91%

①GASでメール送信後、送信日付をセルに入力 ②数式で日付の過去と未来の判断 ③エラーが発生しないGASの自動送信 の対応方法について

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 445

score 20

実装したい内容が3つありますが、うまく実装できずに困っております。
対応方法をご存じの方がいらっしゃいましたら、お教えいただけますとたすかります。

【スプレッドシート画面】
イメージ説明

①GASでメール送信後、送信日付をH列のセルに全て入力
メール文面は定型文で、夫々に送付するメール送信スクリプトを作成しました。
メールは送信できたのですが、メール送信後、H列に自動で送信日を入力するコードを教えていただけないでしょうか?

 var mySheet=SpreadsheetApp.getActiveSheet();  //現在編集中のシートを取得
 var rowSheet=mySheet.getDataRange().getLastRow();  //入力したシートの最下列を取得

  for(var i=2;i<=rowSheet;i++){  //編集中シートの2行目の情報から取得する

  var strDepartment=mySheet.getRange(i,4).getValue(); //部署名(D列)
  var strEmail=mySheet.getRange(i,1).getValue(); //メールアドレス(A列)
  var strName=mySheet.getRange(i,2).getValue(); //名前(B列)
  var strFrom="***@***.co.jp"; //From欄(自分が使ってるメールアドレス)
  var strSender="〇〇〇事務局"; //送信者の名前
  var strcc="***@***.co.jp"; //CCのアドレス


  var strSubject="〇〇〇のお願い";  //メールのタイトル
  var strBody=strDepartment + "\n" +  strName + " さん\n\n"; 
  strBody += "お疲れ様です。\n〇〇〇事務局です。\n\n";  
  strBody += "よろしくお願いします。\n\n"; 

  GmailApp.sendEmail(  //メールの送信処理
    strEmail,
    strSubject,
    strBody,
    {
      from: strFrom,
      name: strSender,
      cc: strcc
    }
  ); 
  }
}

②(①が実装できたと仮定して)数式で日付の過去と未来の判断
K列に、H列とJ列の日付を比較した結果を、「要」「不要」で表したいのですが、可能でしょうか?
H列の日付よりJ列の日付が過去の場合「要」、同日もしくは未来の場合は、「不要」としたいです。

③(①②が実装できたと仮定して)K列のフラグが「要」の人だけに、メールを送信したいです。
スクリプトを作成いたしましたが、実行してもメールが送付されず、原因が分からず困っております。
エラーは発生しませんが、対象案件はあるにも関わらず、メールが送付されない事象となります。

  //本日日付の取得
  var nowDate = new Date();

  //Fromメールアドレス こちらに送り主のメールアドレスを記載してください。
  var mailFrom = "***@***.co.jp";

  //差出人
  var fromName = "〇〇〇事務局";

  //メールタイトルを記載してください。
  var mailSubject = "≪リマインド≫〇〇〇のお願い";

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("m_user");
  var dr = ss.getDataRange();
  var lr = dr.getLastRow();
  var values = dr.getValues();

  var bMailSend = false;

  //メール送信確認  

    //2行目スタート
    for (var i = 2; i < lr; i++) {

   //values[i][1]←の0~3の数字はスプレッドシートの横の数。A列が0,B列が1...  
      // 〆切日
      var shimekiriDate = values[i][8]  
      // 送信フラグ
      var iTeishutsuFlg = values[i][10]  

      if(shimekiriDate < nowDate){  
        if(iTeishutsuFlg == "要"){  
          // 名前  
          var name = values[i][1];  
          // Toメールアドレス  
          var mailTo = values[i][0]; 
          // 部署名
          var strDepartment = values[i][3];


          //メール内容を記載。改行が必要な場合は、後ろに\nをつける。  
          var mailBody = "お疲れ様です。\n〇〇〇事務局です。\n"; 
          mailBody = strDepartment + "\n" +  name + " さん\n\n" + mailBody + "\n"; 
          mailBody = mailBody + "〇〇〇の回答期日が過ぎております。\n";  

          MailApp.sendEmail(mailTo, mailSubject, mailBody,{from: mailFrom,name: fromName});  

          bMailSend = true;            
        }  
      }  
    }      
}

お力をお貸しいただけますとたすかります。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • Google Apps Scriptに関する質問
  • ①GASでメール送信後、送信日付をセルに入力 ②数式で日付の過去と未来の判断 ③エラーが発生しないGASの自動送信 の対応方法について