在列中的每个单元格中检查google工作表的数字是否大于0

时间:2017-04-28 15:50:39

标签: google-apps-script google-sheets spreadsheet

并提前感谢您的帮助。

如果单元格等于或大于0,我需要接收电子邮件。我每隔几个小时使用= IMPORTXML填充此单元格。 我需要这个适用于L列中的任何单元格。 在电子邮件中,我需要查看Cell L和同一行的Cell A的内容。

通过挖掘,我设法达到了这个目标。 很明显,这只是所需要的一半。

thisfunction myNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getSheetByName("Sheet1").getRange("L2").getValue();
  if( value > 0 ) {
    var last = ScriptProperties.getProperty("last");
    value = value.toString();
    if( value != last ) {
      var email = Session.getUser().getEmail();
      MailApp.sendEmail(email, 'My Notification',
                        'new value: '+value+'\n\n'+ss.getUrl ());
      ScriptProperties.setProperty("last", value);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这将遍历Sheet1中包含数据的所有行,如果列L大于0,则发送电子邮件。
它还将更新PropertiesService的较新脚本属性。

var sp = PropertiesService.getScriptProperties();


function myNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var data = ss.getSheetByName("Sheet1").getDataRange().getValues();
  var targetCell = 11; // L

  function sendMail(row) {
    MailApp.sendEmail(
      Session.getUser().getEmail(), 
      'My Notification',
      'new value: ' + row[targetCell] + '\nin: ' + row[0] + '\n' + ss.getUrl ());
    return row;
  };

  function updateScriptProperties(row) {
    sp.setProperty(row[0], row[targetCell]);
    return row;
  };

  function aChanged(row) {
    return sp.getProperty(row[0]) != row[targetCell];
  };

  function colLGreater0(row) {return row[targetCell] > 0;};

  data.filter(colLGreater0)
      .filter(aChanged)
      .map(sendMail)
      .map(updateScriptProperties);
};