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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

受付中

GASでメールの本文を作成

HAMASHO
HAMASHO

総合スコア0

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2回答

0評価

1クリップ

925閲覧

投稿2021/04/25 17:47

実現したいこと

自動メールにて期限通知アラートを実現したいです。

条件

パスの対象
①C列が【印鑑済み】または、E列が【コピー済み】の行
②期限またはモニター日が本日含め30日以内でない行

自動メール通知アラート対象
①赤色またはオレンジ色が含まれる列がある行

ーーーーーーーーーーーー

スプレッドシート上で顧客の情報を管理しています。

赤が期限切れ、オレンジが期限間近。
C列とE列はそれぞれ左隣の日付に対しての進捗状況を表しています。
色が赤、もしくはオレンジになっている行のA列からE列の内容を期限通知アラートメールとして
自動でメールを送りたいと思ってます。

メールを1件ずつではなく
条件に当てはまる行のA列からE列を
そのまま本文にしてひとまとめのですが、
for文で繰り返すプログラムの中で
まとめて本文にするところでとまっています。

ぜひ教えていただけると助かります。

イメージ説明

発生している問題・エラーメッセージ

1行に対してメールが1件ごとに作成されてしまう。 上記の条件分岐のコードの組み方がわからない

試したこと

for文からメール送信につなげる

function mailAlerts2() { //シートを取得 var bk = SpreadsheetApp.getActiveSpreadsheet(); var sh = bk.getSheetByName("シート1 のコピー のコピー"); var last_row = sh.getLastRow(); //最後の行を取得(繰り返し処理の回数) // Logger.log(last_row); var begin_row = 2; // 処理を開始する行 (1行目は項目名なので2から) //今日の日付を取得し文字列を成型する var today = new Date();   // Logger.log(today); var formatDate = Utilities.formatDate(today, "JST","yyyy/MM/dd"); // Logger.log(formatDate); // 完了の水色カラーコード var formatColer = "#00ffff"; // Logger.log(formatColer); // 期限間近のオレンジ var formatColer1 = "#ff9900"; // 期限切れの赤 var formatColer2 = "#ff0000"; コード//繰り返し処理(1行づつ処理し、行の数だけ繰り返す) for(var i = begin_row; i <= last_row; i++) {   //それぞれのセルの中身を取得していく //名簿を取得 var sell0 = "A"+i; var name = sh.getRange(sell0).getValue(); // 期限のまとめ //日を取得 var sell1 = "B"+i; var value1 = sh.getRange(sell1).getValue(); var value1 = Utilities.formatDate(value1, "JST","yyyy/MM/dd");   //B列の背景カラーを取得 var Ecoler4 = "B"+i; var Ecoler45 = sh.getRange(Ecoler4).getBackgrounds(); // Logger.log(Ecoler45); //Cの進捗を取得 var sell3 = "C"+i; var value3 = sh.getRange(sell3).getValue(); // Logger.log(value3);   //進捗の背景カラーを取得 var Ecoler = "C"+i; var Ecoler2 = sh.getRange(Ecoler).getBackgrounds(); // Logger.log(Ecoler2);  // モニター日の取得   var sell2 = "D"+i;   var value2 = sh.getRange(sell2).getValue();   var value2 = Utilities.formatDate(value2, "JST","yyyy/MM/dd"); // Logger.log(value2);   //モニター日の背景カラーを取得 var Ecoler8 = "D"+i; var Ecoler85 = sh.getRange(Ecoler8).getBackgrounds(); // Logger.log(Ecoler85); //モニタリングの進捗を取得 var sell4 = "E"+i; var value4 = sh.getRange(sell4).getValue(); // Logger.log(value4);   //モニタリングの背景カラーを取得 var Gcoler = "E"+i; var Gcoler2 = sh.getRange(Gcoler).getBackgrounds(); // Logger.log(Gcoler2);   //もし、今日の日付と納期が同じで、なおかつ状況が完了でない場合メールを送る if(formatColer != Ecoler2){ var one = []; one.push([name,value1,value3,value2,value4]); GmailApp.sendEmail('xxxxxxxxxx@gmail.com', '【期限アラート】',one);

補足情報(FW/ツールのバージョンなど)

イメージ説明
このような状態でメールが送られてくるのが理想です

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。