セルの範囲内のすべてのセルについて電子メールを送信するスクリプトがあります。スクリプトが再実行されるたびに重複した電子メールを送信しないようにするため、電子メールが送信されるたびに各行にセル(列C)をマークします。 'Sheet2'の例をご覧ください。Googleシート - 別のセルのテキストに基づいてメールを送信する
https://docs.google.com/spreadsheets/d/1_oMbZZjOhfdKuYNWOuyF3fao8yO6W3juFjUsFbFBJaU/edit?usp=sharing
しかし、私はそれに対応する行内のセルが特定のテキストが含まれていたときに電子メールを送り、「シート1」のスクリプトにこれを変換したいです。この例では、列Iにチェックマーク(✓)が含まれているときは、メッセージ(列E)を対応する件名(列D)とともに送信したいと考えています。私はまた、 'Sheet2'の例のように、重複した電子メールを防止したい。つまり、列Iにチェックマークが含まれると、メッセージは送信され、完了し、チェックマークが削除され再入力されない限り再送信されません。
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet2');
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = s.getRange(startRow, 1, numRows, 3)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = "[email protected]";
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = row[0]; // First column
MailApp.sendEmail(emailAddress, subject, message);
s.getRange(startRow + i, 3).setValue(EMAIL_SENT);
SpreadsheetApp.flush();
}
}
}
ご協力いただければ幸いです。
ありがとうございました!
こんにちはクーパー、助けてくれてありがとう!申し訳ありませんが、私はGoogleスクリプティングには新しく、これをSheet1と連携させる方法がわかりません。チェックマークを選択すると、受信トレイに何も表示されません。私はいくつか変更しました:var startRow = 3とvar dataRange = s.getRange(startRow、1、numRows、3シート1では行が異なっています - まだ何もありません。ドロップダウンメニューのチェックマークをクリックすると、セルの範囲から電子メールを送信するのではなく、その行にチェックマークがある場合にのみ電子メールを送信したいと思います。 –