私の会社は、私たちのプロセスの1つをもっと簡単にするためにGoogleフォームを作成しました。 Googleフォームは、フォームから入力されたすべてのデータを含むマスタースプレッドシートに基づいています。このスプレッドシートはフォーム提出を除外し、前述のように「マスタースプレッドシート」からすべての情報を取得する各部門のスプレッドシートにデータを送信します。電子メール通知を送信するGoogleシート
従業員がスプレッドシートでこれらのリクエストを承認または拒否すると、「承認済み」または「拒否」と入力した場合に電子メール通知が届きます。最近では、特定の人が顧客にリクエストを提出した場合に自動的に承認されるように変更しましたが、これを行うと誰も手作業で「承認済み」または「拒否」を入力していないため、これは手動で入力したときでも動作しますが、セルが自動的に入力されるとsendNotificationは機能しません。
個々の部門シートに実際のデータが入力されていないため、「マスターシート」に通知トリガーを入れたいと考えていましたが、電子メール通知を送信する時間があります。基本的には、「列F」のセルに電子メールアドレスの特定のリストが含まれている場合、実際に先に進んで変更を行うように通知する電子メールを第三者に送信します。
ここまではこれまでにあります。これは元々働いていたコードです。私は物事のさまざまなバリエーションを試してみたし、まったく運がなかったが、私はほとんどの教育を受けコーダないよ:
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form Responses 3");
//Get Active cell
var mycell = ss.getActiveSelection();
var cellcol = mycell.getColumn();
var cellrow = mycell.getRow();
var cellValue = mycell.getValue();
var activeUser = Session.getActiveUser();
var recipients = "[email protected]";
var subject = "Update to "+ss.getName();
var body = activeUser + " has marked row " + cellrow + " \"" + cellValue + "\" in \"" + ss.getName() + "\". Visit " + ss.getUrl() + " to view the changes.";
if (cellcol == 2) {
if (cellValue.indexOf('[email protected]') >= 0) {
var subject = "Lunch Is Served";
Logger.log('Sending approval notification of row ' + cellrow + ' to ' + recipients);
MailApp.sendEmail(recipients, subject, body);
}
}
}
我々はlastRowNumberを使用することはできませんのでご注意下さい(少なくとも私は」なかったの私たちはすでに1000行以上がリストされているため、情報は自動的に配列に書き込まれます。ほとんどの場合、現在のトリガーは「フォーム提出時」に設定されています。提出された。
私は見ている人のためのサンプルスプレッドシートを含めました。フォームを記入する際は、あなたのEメールアドレスとして[email protected]を使用してください。
Googleスプレッドシートは、以下のサイトで見ることができます: Test Sheet!
どうもありがとう、私はあなたの回答を読んだことを楽しみにして!あなたがラインを使用することはできません
をするためにどうもありがとうございます@Sandy Goodに答える。唯一のことは、このコードを実行しようとすると、次のエラーメッセージが表示されることです。 "TypeError:未定義のプロパティ値"を読み取ることができません(行8、ファイル "コード") " ?あなたがもう一度それを見たいと思ったら、私はあなたの名前の下に新しいスクリプトを作成しました。また、フォーム上で尋ねられる5番目の質問であるため、[4]の代わりにe.values [5]ではないでしょうか?申し訳ありませんが、私はまだこのようなものには本当に新しいです。 – dhjeffery89
また、もう1つのこととして、ユーザー名を自動的に記録するように通常のシートを設定しています。これは、実際のスプレッドシートの「列B」に記入され、電子メール通知で使用したかったものです。私は自動的にユーザー名を記録するオプションを選択できないので、このようなシートの質問をするように設定しました。それは私に多くの意味を助けるために再びありがとう。 – dhjeffery89
コードエディタからコードを実行すると、オブジェクト 'e'は未定義になります。 'e'がオブジェクトを渡す唯一の方法は、フォームを送信し、その関数がon submitトリガーの関数である場合です。配列内の値には、ゼロベースのインデックスがあります。最初の値のインデックスはゼロです。 –