Javascript 基于列值发送电子邮件=是

Javascript 基于列值发送电子邮件=是,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个谷歌表单,其中电子邮件和姓名栏是根据用户提交的表单自动填充的。另外,我还有两列,其中一列包含赠品代码列表,另一列作为发送电子邮件的批准 所以现在我设法创建了一个按钮,当点击它时,它将发送所有带有赠品代码的电子邮件 现在, 如何仅向状态列中只有值“y”的用户发送电子邮件? 此外,在发送电子邮件后,值“y”将更改为“d”,以便以后,如果我再次使用该功能,它将只发送给新用户 这是图纸示例 这是密码 function sendArticleCountEmails() { var ss = S

我有一个谷歌表单,其中电子邮件和姓名栏是根据用户提交的表单自动填充的。另外,我还有两列,其中一列包含赠品代码列表,另一列作为发送电子邮件的批准

所以现在我设法创建了一个按钮,当点击它时,它将发送所有带有赠品代码的电子邮件

现在,

  • 如何仅向状态列中只有值“y”的用户发送电子邮件?
  • 此外,在发送电子邮件后,值“y”将更改为“d”,以便以后,如果我再次使用该功能,它将只发送给新用户
  • 这是图纸示例

    这是密码

    function sendArticleCountEmails() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      ss.setActiveSheet(ss.getSheetByName("Test1"));
      var sheet = SpreadsheetApp.getActiveSheet();
      var dataRange = sheet.getRange("A2:E1000");
      var data = dataRange.getValues();
      for (i in data) {
        var rowData = data[i];
        var emailAddress = rowData[1];
        var timeStamp = rowData[0];
        var recipient = rowData[2];
        var code = rowData[3];
        var status = rowData[4];
        var message = 'Dear ' + recipient + ',\n\n' + 'The giveaway code is ' + code;
        var subject = 'Here is your giveaway code!';
        MailApp.sendEmail(emailAddress, subject, message);
      }
    }
    
    /**
     * The event handler triggered when opening the spreadsheet.
     * @param {Event} e The onOpen event.
     */
    function onOpen(e) {
      var spreadsheet = SpreadsheetApp.getActive();
      var menuItems = [
        {name: 'Send Emails', functionName: 'sendArticleCountEmails'}
      ];
      spreadsheet.addMenu('Send Emails', menuItems);
    }
    

    只需添加如下所示的if语句:

    function sendArticleCountEmails() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      ss.setActiveSheet(ss.getSheetByName("Test1"));
      var sheet = SpreadsheetApp.getActiveSheet();
      var dataRange = sheet.getRange("A2:E1000");
      var data = dataRange.getValues();
      for (i in data) {
        var rowData = data[i];
        var emailAddress = rowData[1];
        var timeStamp = rowData[0];
        var recipient = rowData[2];
        var code = rowData[3];
        var status = rowData[4];
        var message = 'Dear ' + recipient + ',\n\n' + 'The giveaway code is ' + code;
        var subject = 'Here is your giveaway code!';
        if (status == "y") {
            MailApp.sendEmail(emailAddress, subject, message);
            var actualRow = parseInt(i)+2;
            sheet.getRange(actualRow,5).setValue("d");
            }
      }
    }
    

    很好,很简单!还有一件事是将其值更新为“d”。我尝试添加这个{MailApp.sendmail(emailAddress,subject,message);status.setValue(“d”);},但它返回错误“在对象中找不到函数setValue”,看到您更新了行表.getRange(I+1,5).setValue(“d”);但是,它不起作用,它只是将单词“d”添加到随机行中。有趣的是,它并没有添加一个,而是添加了一个,因为它认为i的值是一个字符串。有关更改,请参见上文。