前提・実現したいこと
E列~G列の中の各列「3行目~5行目」に、blank以外の
ユーザデータ(氏名、所属、E-mail)値が入ったら(ペーストで値が入ったら)、
そのユーザデータ値が入った列の6行目のセル値に入っている値を、特定の人にメールで通知したいです。
■備考
各列の6行目は「3行目~5行目」に入ったユーザデータが数式でまとめて格納されています。
■GASで制限したい3つの条件
①A列やB列に値が入ってもメールは送信されない。
②blankのデータが「3行目~5行目」に入ってもメールは送信されない。
③ユーザデータが特定の列の「3行目~5行目」入る場合、一つの列だけに値が入るとは限らない。
E列とF列、またはE列~G列の複数列に同タイミングでユーザデータが入る場合がある。
上記の場合は、その値が入った列の分だけメール数が送信されるようにしたい。
該当のソースコード
//現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); //そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; //シートにあるアクティブなセルを取得 var objCell = sheet.getActiveCell(); //E列、6行目のユーザデータ値を取得 var formValue = sheet.getRange(6,3,1).getValues()[0]; function myFunction() { //もしE列が編集された且つ、アクティブセル値が空欄ではない場合、メールを送信 if(objCell == 5 && objCell.getValue() !== '') { MailApp.sendEmail({to:"XXXXXX@.co.jp", subject:"通知", body:formValue[0]});; } }
試したこと
上記該当のソースコードでは、
E列のアクティブセルでしかメールが飛びません。。
E列~G列の中の各列の特定の行に値が入ったら、メールを通知するようにしたいです。
GASに精通されている方、お知恵をお貸しいただけますと幸いです。
どうぞ、よろしくお願いいたします。
どういう運用をしたいのかと、トリガーの要件が不明確な気がします。
「編集時」をトリガーにやらず、実行ボタンやメニューからGAS動かした方がよいんじゃないでしょうか?(その方が暴発メールが起こらないんじゃないかと)
①A列やB列に値が入ってもメールは送信されない。
→ C,Dはどういう扱いでしょうか?H列以降は?
②blankのデータが「3行目~5行目」に入ってもメールは送信されない。
→ 1つでもblankがあればという意味合いでしょうか?
sawaさん コメントありがとうございます!
>どういう運用をしたいのかと、トリガーの要件が不明確な気がします。
仰る通りですね。。失礼しました。
●運用について
前提:新入社員の情報をスプレッドシートに入力したら、
特定の人にその社員情報を自動でメール通知したいと考えています。
~手順~
1.C、D列の3~5行目に新しく入社された社員情報を記入します。(A列、B列も社員情報記入欄にするか考えています。しかし今回は一旦C、D列のみとさせていただきます)
※1列、1名分の社員情報が入るものとします。
※記入の際は、3~5行目の氏名、所属、E-mailすべて記入されるものとします。(1つでもblankの項目があるということは無いものとします)
2.C、D列に記入した社員情報(今回は2名分)をコピーし、
E、F列に貼り付けを行います。
3.上記2.で社員情報を貼り付けたタイミングで、
その更新された列の6行目のセル値を特定の人にメールで通知したいです。
(今回は、E、F列の2名分の情報が更新されたため、「この方が入社されましたよ」との旨
2通のメールが通知される)
※C、D列に入ったデータは、新入社員が入るたびにデータを削除し、
使い回す運用で考えています。
※E列以降はE列~G列のみ列挿入を行い、使い回す予定です。
H列以降は新入社員の情報が蓄積される形で運用を考えています。
>①A列やB列に値が入ってもメールは送信されない
>→ C,Dはどういう扱いでしょうか?H列以降は?
明記が誤っておりました。
A~D列また、H列以降に値が入ってもメールは送信されないようにしたいです。
E、F、G列にだけ効くトリガーで運用したいと考えてます。
>②blankのデータが「3行目~5行目」に入ってもメールは送信されない。
>→ 1つでもblankがあればという意味合いでしょうか?
いえ、3~5行目すべてブランクの状態であればという意味合いとなります。
回答1件
あなたの回答
tips
プレビュー