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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

1164閲覧

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

mitsuba

総合スコア20

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/08/13 03:47

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

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

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

function

1 2 var mySheet=SpreadsheetApp.getActiveSheet(); //現在編集中のシートを取得 3 var rowSheet=mySheet.getDataRange().getLastRow(); //入力したシートの最下列を取得 4 5 for(var i=2;i<=rowSheet;i++){ //編集中シートの2行目の情報から取得する 6 7 var strDepartment=mySheet.getRange(i,4).getValue(); //部署名(D列) 8 var strEmail=mySheet.getRange(i,1).getValue(); //メールアドレス(A列) 9 var strName=mySheet.getRange(i,2).getValue(); //名前(B列) 10 var strFrom="***@***.co.jp"; //From欄(自分が使ってるメールアドレス) 11 var strSender="〇〇〇事務局"; //送信者の名前 12 var strcc="***@***.co.jp"; //CCのアドレス 13 14 15 var strSubject="〇〇〇のお願い"; //メールのタイトル 16 var strBody=strDepartment + "\n" + strName + " さん\n\n"; 17 strBody += "お疲れ様です。\n〇〇〇事務局です。\n\n"; 18 strBody += "よろしくお願いします。\n\n"; 19 20 GmailApp.sendEmail( //メールの送信処理 21 strEmail, 22 strSubject, 23 strBody, 24 { 25 from: strFrom, 26 name: strSender, 27 cc: strcc 28 } 29 ); 30 } 31}

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

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

function

1 2 //本日日付の取得 3 var nowDate = new Date(); 4 5 //Fromメールアドレス こちらに送り主のメールアドレスを記載してください。 6 var mailFrom = "***@***.co.jp"; 7 8 //差出人 9 var fromName = "〇〇〇事務局"; 10 11 //メールタイトルを記載してください。 12 var mailSubject = "≪リマインド≫〇〇〇のお願い"; 13 14 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("m_user"); 15 var dr = ss.getDataRange(); 16 var lr = dr.getLastRow(); 17 var values = dr.getValues(); 18 19 var bMailSend = false; 20 21 //メール送信確認 22 23 //2行目スタート 24 for (var i = 2; i < lr; i++) { 25 26   //values[i][1]←の0~3の数字はスプレッドシートの横の数。A列が0,B列が1... 27 // 〆切日 28 var shimekiriDate = values[i][8] 29 // 送信フラグ 30 var iTeishutsuFlg = values[i][10] 31 32 if(shimekiriDate < nowDate){ 33 if(iTeishutsuFlg == "要"){ 34 // 名前 35 var name = values[i][1]; 36 // Toメールアドレス 37 var mailTo = values[i][0]; 38 // 部署名 39 var strDepartment = values[i][3]; 40 41 42 //メール内容を記載。改行が必要な場合は、後ろに\nをつける。 43 var mailBody = "お疲れ様です。\n〇〇〇事務局です。\n"; 44 mailBody = strDepartment + "\n" + name + " さん\n\n" + mailBody + "\n"; 45 mailBody = mailBody + "〇〇〇の回答期日が過ぎております。\n"; 46 47 MailApp.sendEmail(mailTo, mailSubject, mailBody,{from: mailFrom,name: fromName}); 48 49 bMailSend = true; 50 } 51 } 52 } 53}

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問