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

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

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

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

Q&A

解決済

1回答

11379閲覧

スプレッドシートで特定の列のセルに色がついた時に、メールで通知がくるようにしたい

monchi2133

総合スコア2

Google スプレッドシート

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

0グッド

0クリップ

投稿2020/10/02 14:52

スプレッドシートについて

セルの値が一定の数に達した場合、色が変わるように条件付き書式を設定しているのですが
色が変わった時点で、メールで通知がくるように組みたいと思っております。

または、セルの値が一定の数に達した場合、メールで通知がくるように組みたいと思っております。

ご教授いただけますと幸いでございます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じの流れではいかがでしょうか。

①「セルの値変更」をトリガにして、実行するGAS関数を設定
②メールを送付するかどうかをGAS関数内で判定
➡セルの色が変わっているかどうか
➡もしくは、条件書式に関係なく、直接値を確認(セルの値が一定の数に達したかどうか)
③メールを送付

●参考
値の変更をトリガにする方法
https://tonari-it.com/gas-trigger-changed/#toc2
gasでのメール送信方法
https://auto-worker.com/blog/?p=1511

追記

サンプル作ってみました。
●動かし方
(1)エディタに下記のコードを書く
(2)onChangeStatus()関数をイベントトリガーに設定する(イベントの種類:変更時)
イベントトリガ設定方法
(3)シートからA1セルの値を変更すれば、条件通りに動作するとおもいます。
※ifの条件式を質問者さんの好きなように変えてもらえば、目的の挙動が得られると思います。

GAS

1//onChangeStatusはシートの値が変更された時に実行するようにトリガ設定しておく. 2function onChangeStatus(){ 3  4 var Sheet = SpreadsheetApp.getActiveSheet(); //シートを取得 5 6 //A1の値が10以上に変更されたらメールを送信 7 if(Sheet.getRange('A1').getValue() >= 10){ //チェックしたいセル 8 sendEmail(); 9 Browser.msgBox('メールを送信しました'); 10 }else{ 11 Browser.msgBox('メール未送信'); 12 } 13} 14 15function sendEmail(){ 16 const recipient = "foobar@gmail.com"; //送信先のアドレスを書く 17 const subject = '件名'; //件名を書く 18 const body = `メッセージ`; //本文を書く 19 const options = {name: '差出人'}; 20 GmailApp.sendEmail(recipient, subject, body, options); //メール送信 21}

追記 2行目のいづれかのセルが10に変更された時にメール送信

gas

1//onChangeStatusはシートの値が変更された時に実行するようにトリガ設定しておく. 2function onChangeStatus(){ 3  4 var Sheet = SpreadsheetApp.getActiveSheet(); //シートを取得 5 6 var ActCell = Sheet.getActiveCell(); //変更されたセル 7 var ActRow = ActCell.getRow() //変更されたセルの行番号 8 var ActCol = ActCell.getColumn() //変更されたセルの列番号 9 var ActValue = Sheet.getRange(ActRow, ActCol).getValue() //変更されたセルの値 10 11 //変更されたセルが2行目かつ値が10の場合 12 if(ActRow == 2 && ActValue == 10){ 13 sendEmail(); 14 Browser.msgBox('メールを送信しました.'); 15 }else{ 16 Browser.msgBox('メール未送信'); 17 } 18} 19 20function sendEmail(){ 21 const recipient = "lookatachic@gmail.com"; //送信先のアドレスを書く 22 const subject = '件名'; //件名を書く 23 const body = `メッセージ`; //本文を書く 24 const options = {name: '差出人'}; 25 GmailApp.sendEmail(recipient, subject, body, options); //メール送信 26}

投稿2020/10/02 16:37

編集2020/10/21 14:37
KazuSaka

総合スコア640

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

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

monchi2133

2020/10/10 11:53

ありがとうございます。 var ss = SpreadsheetApp.getActiveSpreadsheet(); var e = ss.getSheetByName("シート名"); function onChangeStatus(){ var cell = e.range; var status = e.value; var sheet = e.getSheet; var column = e.getColumn; var row = e.getRow; var lastrow = e.getLastRow; var values = e.getValues; if(status == "1"){ sendEmail(row); } } function sendEmail(row){ const recipient = "送信先のメールアドレス"; const subject = '件名'; const body = `メッセージ`; const options = {name: '差出人'}; GmailApp.sendEmail(recipient, subject, body, options); } 上記のように組んで値の変更をトリガにしているのですが sendEmailが条件に会うときに送信されません。 ご教授いただけますと幸いでございます。
KazuSaka

2020/10/10 16:38

回答にサンプルを追記しました。 よろしければ、試してみてください。
monchi2133

2020/10/12 12:41

追記ありがとうございます。 おっしゃる通り動作致しました。 基本的なことなのかもしれないのですが 2行目の全てのセルをチェックして、 同じ値であればメールを送信という書き方がわからず困っております。 if(Sheet.getRange('2:2').getValue() == 10) 上記だと思ったように動作致しませんでした。 ご教授いただけますと幸いでございます。
KazuSaka

2020/10/12 16:17

「2行目の全てのセルをチェックして、」 というのは、シート内の2行目ということですか? シートの2行目の各セルの値はgetValues()で配列で取得できますよ。 取得した配列をチェックすれば、良いと思います。 具体的にシートの内容を教えてもらえば、説明できますが、、、
monchi2133

2020/10/21 12:57

説明が下手で申し訳ございません。 いろいろ試してみましたがなかなか動作せず・・・ 内容としましては シート内の2行目のいずれかのセルが[10]になったとき、 メールを送信するというものになります。 ご教授いただけますと幸いです。
KazuSaka

2020/10/21 14:41

回答に追記しました。 変更されたセル情報を取得して、そのセルの情報からメールの送信有無を判定するようにしています。ご確認ください。 ※getValuesで2行目の値をすべて取得する方法よりシンプルだと思います。
monchi2133

2020/10/21 15:02

ありがとうございます。 動作いたしました。 Actというものがあったのですね。 もっと勉強します。 長らく大変お世話になりました。
KazuSaka

2020/10/21 15:17

解決してよかったです。 がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問