简体   繁体   English

Google Apps脚本-基于IF功能发送电子邮件

[英]Google Apps Script - sending e-mails based on IF function

I'm having some issues setting up a script in Google Apps. 我在Google Apps中设置脚本时遇到了一些问题。 I'm trying to get an e-mail to be sent out whenever a specific number is entered into a cell. 我试图让每当在单元格中输入特定号码时就发送一封电子邮件。

I would like it to work in the following way: 我希望它以以下方式工作:

If the number 1 is entered into cell D2 on a Sheet named "Ordered", I would like cell A1 on sheet "Codes" to be sent to the current active user. 如果将数字1输入到名为“ Ordered”的工作表的单元格D2中,我希望将“代码”工作表的单元格A1发送给当前的活动用户。 If the number 2 is entered, I would like cells A1:A2 to be sent; 如果输入数字2,我希望发送单元格A1:A2; if 3 is entered cells A1:A3 should be sent etc. all the way up to 5 meaning cells A1:A5 should be sent. 如果输入了3,则应发送单元格A1:A3,依此类推。一直到5,意味着应发送单元格A1:A5。

I have created a time driven script and written the following however no e-mail is being generated despite the script apparently running with no errors: 我创建了一个时间驱动脚本并编写了以下内容,尽管该脚本显然运行无误,但仍未生成电子邮件:

function sendemail () {

var emailaddress = Session.getActiveUser().getEmail()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var r = SpreadsheetApp.getActiveRange();

var vName = s.getName();
var vColumn = r.getColumn();
var vValue = r.getValue();

var row = r.getRow(); 
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Ordered");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

var emailAddress = Session.getUser().getEmail(); 
var dataRange = targetSheet.getRange("A1:A10"); 
var emailData = dataRange.getValues();
var subject = "Sending emails from a Spreadsheet";  

if(vName == "Ordered" && vColumn == 4 && row == 2 (typeof vValue == "number")) { 
 s.getRange(row, 1, vValue, numColumns);
 MailApp.sendEmail(emailAddress, subject, emailData);
 s.deleteRows(row, vValue);
 }
 }

When I check the Execution transcript the last thing listed is: 当我检查执行记录时,列出的最后一件事是:

Range.getValues()
Execution succeeded

I'm a complete beginner to all of this so if anyone could help out I would be eternally grateful! 我是所有这一切的初学者,所以如果有人可以帮忙,我将永远感激不已!

The script you wrote is almost perfect... This single word (almost) unfortunately made the difference... 您编写的脚本几乎是完美的...不幸的是,这个单词(几乎)产生了不同...

the if condition was wrong. if条件错误。

try it like this : 像这样尝试:

function sendemail () {

  var emailaddress = Session.getActiveUser().getEmail()
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = SpreadsheetApp.getActiveSheet();
  var r = SpreadsheetApp.getActiveRange();

  var vName = s.getName();
  var vColumn = r.getColumn();
  var vValue = r.getValue();

  var row = r.getRow(); 
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Ordered");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

  var emailAddress = Session.getUser().getEmail(); 
  var dataRange = targetSheet.getRange("A1:A10"); 
  var emailData = dataRange.getValues();
  var subject = "Sending emails from a Spreadsheet";  
  Logger.log(vName+'  '+vColumn+'   '+typeof(vValue));
  if(vName == "Ordered" && vColumn == 4 && row == 2 && typeof(vValue) == "number") { 
    s.getRange(row, 1, vValue, numColumns);
    MailApp.sendEmail(emailAddress, subject, emailData);
    s.deleteRows(row, vValue);
  }
}

That said, it does not respond to the goal you described in your question about the ranges and values... I guess it was an attempt you made to test the workflow. 就是说,它没有响应您在问题中描述的有关范围和值的目标……我想这是您测试工作流程的尝试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM