【问题标题】:Google Apps Script - sending e-mails based on IF functionGoogle Apps 脚本 - 基于 IF 函数发送电子邮件
【发布时间】:2014-08-05 14:01:42
【问题描述】:

我在 Google Apps 中设置脚本时遇到了一些问题。每当在单元格中输入特定数字时,我都会尝试发送一封电子邮件。

我希望它以下列方式工作:

如果在名为“Ordered”的工作表上的单元格 D2 中输入数字 1,我希望将工作表“代码”上的单元格 A1 发送给当前活动用户。如果输入数字 2,我希望发送单元格 A1:A2;如果输入 3,则应发送单元格 A1:A3 等。一直到 5 表示应发送单元格 A1:A5。

我创建了一个时间驱动的脚本并编写了以下内容,尽管该脚本显然运行没有错误,但没有生成电子邮件:

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);
 }
 }

当我检查执行记录时,列出的最后一件事是:

Range.getValues()
Execution succeeded

我是所有这一切的初学者,所以如果有人能提供帮助,我将永远感激不尽!

【问题讨论】:

    标签: if-statement google-apps-script


    【解决方案1】:

    你写的剧本几乎是完美的...... 不幸的是,这个词(几乎)起了作用……

    if 条件错误。

    像这样尝试:

    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);
      }
    }
    

    也就是说,它没有响应您在问题中描述的关于范围和值的目标......我想这是您为测试工作流程所做的尝试。

    【讨论】:

    • 谢谢 Serge,我现在正在努力处理代码的不同部分,并且正在努力在 cmets 部分解释它,所以开始了一个新问题 - 我希望你能再次提供帮助!
    • ?我猜您发送此链接是为了建议我回答正确?。我稍后再做;)顺便说一句,谢谢!
    猜你喜欢
    • 2021-11-21
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多