Я пытаюсь предотвратить дублирование ответа электронной почты в листах Google при запуске команды ответа - PullRequest
0 голосов
/ 15 октября 2019

Я получил этот код из учебника Google Sheets, и он работает, я хочу отправить ответ по электронной почте после того, как мои коллеги заполнили форму Google. Электронная почта работает, поэтому первый шаг завершен, но он продолжает отправлять электронную почту, даже если я назначил ее, не отправляя дубликаты электронной почты. Мой лист выглядит следующим образом:

    Time Stamp/Email Address/Message/Complete for columns A-D
    date-time/test@email.com/   Test1/  EMAIL_SENT
    date-time/ test@email.com/  Test2/  EMAIL_SENT
    date-time/test@email.com/   Test3/  EMAIL_SENT
    // This constant is written in column C for rows for which an email
    // has been sent successfully.
    var EMAIL_SENT = 'EMAIL_SENT';

    /**
     * Sends non-duplicate emails with data from the current spreadsheet.
     */
    function sendEmails2() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 2; // First row of data to process
      var numRows = 3; // Number of rows to process
      // Fetch the range of cells B1:D3
      var dataRange = sheet.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 = row[1]; // Second column
        var message = row[2]; // Third column
        var emailSent = row[3]; // Fourth column
        if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
          var subject = 'Your PFB Request';
          MailApp.sendEmail(emailAddress, subject, message);
          sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
          // Make sure the cell is updated right away in case the script is interrupted
          SpreadsheetApp.flush();
        }
      }
    }

1 Ответ

2 голосов
/ 16 октября 2019

var dataRange = sheet.getRange(startRow, 1, numRows, 3);

getRange не является нулевым методом. Ваше определение определяет диапазон шириной всего 3 столбца. Он НЕ включает столбец «Complete».

Измените его на: var dataRange = sheet.getRange(startRow, 1, numRows, 4);

Столбец «Complete» будет соответствовать строке [3] (на основе нуля). В настоящее время строка [3] не имеет значения, вероятно, «undefined», и объясняет, почему не работает оператор «IF».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...