*コメントいただき、良い方法が見つからず以下のように変更します。
スプレッドシートで以下のようなシートを作成しております。
A列の新人が質問を入力し、C列に値(担当の上司)が入るとその担当の上司に通知を送るような仕組みを作りたいです。
| A | B | C |
|---|---|---|
| 新人(プルダウン) | 質問 | 上司(Aを入力することにより自動入力) |
| 井上 | XXXX | 田中 |
| 寺田 | XXXX | 山田 |
C列に値が入ったら、その方に自動で通知メールを送りたいのですが、Google App Scriptでそのようなことは可能でしょうか。
referenceなどを見ながら以下やってみたのですが、更新をしても動きません。トリガーは編集時に設定しております。
function onEdit(e) { var sheet = SpreadsheetApp.openById('xxxxx'); var add = sheet.getSheetByName('xx'); //上司の名前を拾う if(e.range.getColumn() === 3 ) { //通知対象者のメールアドレス const recipients = { '田中': 'zzzzz@gmail.com', '山田': 'xxxxx@gmail.com', '太田': 'aaaaa@gmail.com', '井上': 'bbbbb@gmail.com' }; //メールの件名、本文 var mailSubject = ("質問がありました。"); var mailBody = ("お時間のある時に回答をお願いいたします。") MailApp.sendEmail(recipients[e.value], mailsubject, mailbody); }}
有識者の方ご教示いただきたくお願いいたします。
C列から得た名前をL列から検索して見つかった行のM列の値が送信先アドレスになるわけですよね。
でも同名がある場合どうします?
ご連絡ありがとうございます。
はい、ご認識の通りでございます。
この場合ですと、新人さんが複数回質問をおこなうと、同名が表示されるようになります。
どうしたらよいのか、スマートな考えが思い浮かばないのですが、同じ名前が表示されてしまうと処理が複雑になりますでしょうか。
C列を直接編集した場合はトリガーによりonEditを走らせてrecipients[e.value]を取得できるはずです。
A列のデータが選択されたときに自動的にC列の値を変更する仕組みにしていると思いますが、その方法を具体的に教えてください。
あと、ちょっとわからないのは、A列で名前を選択→C列が自動変更→トリガーでメール送信という仕組みだと、B列に質問を入力する間がない気がするのですが。
質問を重ねますが C 列を埋めている仕組みを教えてください。
どうやる、を考えるのではなく、ユーザにもっとも分かりやすいやりたいこと、を率直に教えてほしいです。
あなたの回答
tips
プレビュー