当特定单元格中的值更改时如何发送电子邮件

时间:2019-08-08 18:33:01

标签: google-apps-script google-sheets

我有一个电子表格来分析波动。我希望该软件在单元格比以前的值增加10%时发送电子邮件。我读了几年前在这里的另一个答案,它说当您想要更改为某个数字(即,如果值超过2)时,您可以让Google工作表执行此操作,但是我想知道是否可以对%执行此操作变化。也就是说,如果现在其中包含114.25的单元格增加到125.678或更多,我希望收到一封电子邮件。

如果值发生10%的变化,它会提醒我任何帮助。谢谢!

以下是根据我在网上找到的代码尝试过的一些方法...我上过大学的编码课程,但不学习软件,只学习网站...

    function getValue() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Perc");
      var value = sheet.getRange("B3").getValue();
      var title = sheet.getRange("B1").getValue();
      if(value >= "1") sendEmail(value, title)
    };


    function sendEmail(value, title){
      var recipient="someemail@gmail.com";
      var subject=title + "Percent Change";
      var body=title + " percent changed by " + value + "%";
      MailApp.sendEmail(recipient, subject, body);
    };

我只是不知道如何改变百分比而不是大于或等于1 ...

1 个答案:

答案 0 :(得分:0)

  

如果工作表中的值会自动更新-您将始终只看到   新值,将无法与旧值进行比较。

我建议您实现一个函数,该函数可在每次运行脚本时将乘以所需百分比因子的实际值复制到辅助工作表中。

这里有个主意:

    function getValue() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Perc");
      var value = sheet.getRange("B3").getValue();
      var title = sheet.getRange("B1").getValue();
      //check if copySheet exists already, otherwise insert it
       if (!ss.getSheetByName("copySheet")) {
        ss.insertSheet("copySheet");
       } 
      copySheet=ss.getSheetByName("copySheet"); 
      var percentage=110;
      var copiedCell=copySheet.getRange("B3");
      var oldValue=copiedCell.getValue();
      // rounding necessary due to JS characteristic handling of floating point values
      var change=(Math.round(value/oldValue*100));
      if(change >= percentage) {
        sendEmail(value, title, change)
      }
      copiedCell.setValue(value);
    };

    function sendEmail(value, title, change){
      var recipient="someemail@gmail.com";
      var subject=title + "Percent Change";
      var body=value + " changed by " + change + " percent";
      MailApp.sendEmail(recipient, subject, body);
    };
相关问题