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

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

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

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

Q&A

2回答

3800閲覧

《GAS》スプレッドシートの特定行が変更された場合メール送付をしたい

aki_autumn

総合スコア10

Google Apps Script

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

0グッド

0クリップ

投稿2019/02/20 14:40

GAS初心者です。

社内の休日申請でGoogle Formを使用しています。
申請があった場合、スプレッドシート上のGASで、上長にメールが送付される、と言うスクリプトはかけたのですが、
その後上長がスプレットシート内で「承認」とすると、申請者(B列から引っ張る)、総務担当者(手入力を想定)にメールが送付されるようにしたいです。

A列:タイムスタンプ
B列:メールアドレス(自動的に記録しています)
C列:名前

T列:承認行
※ 今の所、上長は手作業で「承認」と入力するつもりです。

Googleで色々検索をかけたのですが、どうしても見つからず。
お知恵をお貸しいただければ幸いです。

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

javascript

1function onEdit(e) { 2 const sheet = e.range.getSheet(); 3 const targetSheet = "回答"; 4 if(sheet.getName() !== targetSheet) {return;} //対象シートのチェック 5 const inputVal = e.value; 6 const approve = "承認"; 7 if(inputVal !== approve) { return; } //記入値のチェック 8 const c = e.range.getColumn(); 9 const col_T = 20; 10 if(c !== col_T) { return; } //列のチェック 11 const r = e.range.getRow(); 12 const applicantEmail = sheet.getRange(r, 2).getValue(); 13 GmailApp.sendEmail(applicantEmail, "休日承認", "休日が承認されましたよ"); 14}

投稿2019/02/21 05:31

papinianus

総合スコア12705

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

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

papinianus

2019/02/21 05:47

onEditって書いてるけどトリガ登録しないとメールは送れないと思う
guest

0

投稿2019/02/20 19:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aki_autumn

2019/02/21 12:31 編集

NETACHILさん、papinianusさん、早々にご回答をありがとうございました! あれから見よう見まねで作ったスクリプトです。(papinianusさん、せっかくOnEditのスクリプトをいただいたのに申し訳ありません) function sendNotification() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var cell = ss.getActiveCell().getA1Notation(); var row = sheet.getActiveRange().getRow(); var cellvalue = ss.getActiveCell().getValue().toString(); var recipient = ''; if(cell.indexOf('T')!=-1){ var recipient = sheet.getRange('B'+ sheet.getActiveCell().getRowIndex()).getValue() var shinsei = sheet.getRange('E'+ sheet.getActiveCell().getRowIndex()).getValue() var name = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue() } var subject = shinsei + '申請が承認されました'; var body = name + "様" + " \n\n"; body = body + "あなたの" + shinsei + "が承認されました。";  MailApp.sendEmail(recipient, subject, body,{cc:'***@gmail.com'}); }; ただこの場合、T列に編集された場合メールが行くので、「承認」と入れなくてもメールが行く可能性がありますよね。ここを「承認」と入れた場合にのみ行くように書き換えたいと思っています。
退会済みユーザー

退会済みユーザー

2019/02/21 15:04

cellvalue変数に編集された値が入っていると思うので、その値が”承認”という文字列と等しいならメールを送る、等しくないならメールを送らないという風に条件分岐すればいいかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問