実現したいこと
-
同じGoogleスプレッドシート内に、同じ種類のスクリプト(onChangeStatus)を、それぞれ対象範囲を変えて複数設置したいです。
-
設置したいGASの機能:特定の列のテキストが「完了」に変更されたら、対象のメールアドレスに通知を送りたいです。それを複数用いることで、B列の完了は「納品物の名前が確定しました」、F列の完了は「納品が完了しました」などと通知を使い分けたいです。
前提
Googleスプレッドシートで、GASを使って
特定の列のテキストが「完了」に変更されたら、対象のアドレスにメール通知を送るスクリプトを作りました。
スクリプトが1つの場合は問題なくメールが届きます。
発生している問題・エラーメッセージ
スクリプトを複数立てると、いずれか一つしか作動しません。
トリガーの関数選択のところに
このプロジェクトには同じ名前の関数が複数含まれています。これらのいずれかを選択すると、予期しない動作が発生します。
と表示されます。
※合っているのか分かりませんが、同じ関数、かつ通知が欲しいタイミングは全て「更新してすぐ」なので、トリガーは合わせて1つのみにしています。
該当のソースコード
※記載しているのはF列の「完了」を通知する場合です。
これのif(column === 以下と、メールの内容を変えて複数作成しています。
function onChangeStatus(e){ var cell = e.range; var status = e.value; var sheet = cell.getSheet(); var column = cell.getColumn(); var row = cell.getRow(); var lastRow = sheet.getLastRow(); if(column === 6 && row >= 2 && row <= lastRow && status === 'TRUE'){ sendmail(row);// } } function sendmail(row){ var FIELDS = { no: 1, nouhinname: 3, } var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); var index = row - 1; var myNo = values[index][FIELDS.no]; var nouhinname = values[index][FIELDS.nouhinname]; var recipient = '○○@○○.co.jp(指定のメールアドレス)'; var recipientName = '納品完了のお知らせ'; var subject = ''; subject += '納品完了 [' + myNo + '] '+nouhinname+''; var body = ''; body += recipientName + '\n'; body += '以下の納品が完了しました。\n' body += '[' + myNo + '] '+'\n'+ nouhinname +'\n' + ; GmailApp.sendEmail(recipient, subject, body); }
試したこと
- 複数のスクリプトを並べた場合、リストの1番下のものが作用するようでした。
- 別の関数を入れているスクリプト(今回挙げているものとは全く別の機能)については問題なく動きます。
- 同じ関数のものは、同じスクリプトに羅列してみましたが、変わらないため、前に進めない状況です。
非エンジニアのため、解決策がこれ以上わからず、アドバイスいただけますと幸いです。
よろしくお願いいたします。
