0

Googleスプレッドシートに列(列C)があり、メールで送信したいのですが、セルD3などに「X」を入力しました。

D3 に X を入力すると、なんとかメールを送信できましたが、内容が正しくありません。列 C のすべてを含む 1 つのメールではなく、列 C の行ごとに異なるメールを受信して​​しまいます

どんな助けでも大歓迎です、

編集: コードが追加されました。

var EMAIL_SENT = "EMAIL_SENT";  //text to put when mail has been sent

function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 1;  // First row of data to process
  var numRows = 999;   // Number of rows to process
  var dataRange = sheet.getRange(1,1, numRows, 3)
  //start on row 1 untill numRows
  //and 3 columns wide
  var data = dataRange.getValues(); 
  //get content of cell A1
  for (var i = 0; i < data.length; ++i) {
    //start loop to search for data
  var row = data[i];
  var emailSent = sheet.getRange("F3").getValue(); 
  var readytosend = sheet.getRange("D3").getValue();
    if (emailSent != EMAIL_SENT && readytosend == "X") {

      MailApp.sendEmail({
        to: "mail@mail.com",
        subject:  "test",
        body: row[0],       
        });
      //sends the email

      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      //sets email_sent value and increases i to check next row
      SpreadsheetApp.flush();
    }
    }

サム

4

1 に答える 1

0

コードでは、セルごとに電子メールを送信します。メールを 1 回送信する場合は、各行の値を保存し、最後に送信します。以下の例でこれを行うことができます。

var EMAIL_SENT = "EMAIL_SENT";  //text to put when mail has been sent

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 1;  // First row of data to process
  var numRows = sheet.getMaxRows();   // Number of rows to process
  var dataRange = sheet.getRange("C" + startRow + ":C" + numRows);
  var data = dataRange.getValues();
  var htmlBody = "";
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailSent = sheet.getRange("F3").getValue(); 
    var readytosend = sheet.getRange("D3").getValue();
    if (emailSent != EMAIL_SENT && readytosend == "X") {
      htmlBody += row[0] + "<br/>";
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();
    }
  }

  if (htmlBody && htmlBody.length) {
    MailApp.sendEmail({
        to: "user@gmail.com",
        subject:  "Subject",
        body: "Email body",
        name: "Name",
        htmlBody: htmlBody
    });
  }
}
于 2013-09-06T21:19:55.447 に答える