前提・実現したいこと
イベントトリガーをGASに設定して、データが編集された時点で、指定の条件を満たす場合、メールを対象者に送ることを目的にしています。
例
|セクションA|セクションB|
1 |完了 |完了 |
2 |完了 |未完了 |
3 |完了 |完了 |
4 |完了 |未完了 |
5 |完了 |完了 |
1~5の項目すべてが完了となった場合にメールを送信という流れに。
上記例で考えるとすれば、セクションAはすべてのタスクのステータスが「完了」となっているためメール送信。
セクションBは未完了タスクがあるためメールは未送信。
参考にしたソースコード
GAS
1function sendEmailByEvent() { 2 3 //シート内の全データを取得 4 var sheet = SpreadsheetApp.getActiveSheet(); 5 var data = sheet.getDataRange().getValues(); 6 7 //変更されたセルを取得、また、セルの行数を取得して配列に対応できるように-1した変数を設定 8 var targetCell = sheet.getActiveCell(); 9 var targetCellRow = targetCell.getRow()-1; 10 11 //メール送付先のアドレスとメール題名を設定 12 var recipient = "メールの送り先アドレス", subject = "テスト"; 13 14 //メール本文用に、取得したセルの行データをbody配列にpushする 15 var body = [] 16 body.push(data[targetCellRow]) 17 18 //今回のメイン。最初のifで変更があったセルが設定2に対応するC列であるかどうかを判断。次のifで設定1が完了以外、設定2が完了になっているかどうかを確認。そして、GmailAppで内容こみのメールを送る 19 if(targetCell.getColumn() === 3){ 20 if(data[targetCellRow][1] !== "完了" && data[targetCellRow][2] ==="完了") 21 GmailApp.sendEmail(recipient, subject, body) 22 } 23}
上記コードに関して
自らで調べた結果、上記コードで似たような処理ができることが判明。
しかし、こちらのコードでは以下のような、列で条件判別をしているため、どのようにすればその判定を行にできるのかがわかりません、、、
|1 |2 |
セクションA |完了 |完了 |
セクションB |完了 |未完了 |
私自身、GASを触り始めたばかりで調べては試すといった具合で学習を行っている途中であり、どなたかご教授いただけると幸いです。
あなたの回答
tips
プレビュー