繁体   English   中英

Google 表格 - 发送 Email

[英]Google Sheet - Send Email

每次条件变为真时,我都需要我的 google 表格来发送电子邮件。 在这种情况下,每次 C2 的值都低于 J2 的值。 在单元格 L2 上有 email 地址。

代码(在网上找到并刚刚编辑)

function CheckPrice() {
  var LastPriceRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange("C2"); 
  var LastPrice = LastPriceRange.getValue();
  var EntryLimitRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange("J2"); 
  var EntryLimit = LastPriceRange.getValue();
  var StockNameRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange("B2"); 
  var StockName = LastPriceRange.getValue();
  // Check totals sales
  if (LastPrice < EntryLimit){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts").getRange("L2");
    var emailAddress = emailRange.getValues();
  
    // Send Alert Email.
    var message = 'Ticker ' + StockName + ' has triggered the alert';
    var subject = 'Stock Alert';
    MailApp.sendEmail(emailAddress, subject, message);
    }
}

使用此代码我没有收到任何错误,但我什至没有收到 email。我在第一次运行脚本时按要求授予了权限。

在 L2 上,我放置了我授予权限的相同 email 地址(我将 email 发送给自己)。 我什至尝试放置一个辅助 email 地址。

你能告诉我哪里出了问题吗?

问题:

  • 查看您定义LastPriceEntryLimitStockName的代码的第一行。 他们都来自同一个范围: LastPriceRange

  • 我还删除了脚本中所有不必要的调用。 无需多次调用SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts") ,您只需将其放入一个变量并使用该变量即可。

  • 此外,您不需要定义不必要的变量。 例如,您可以使用一行获取单元格的值: sh.getRange("B2").getValue()

解决方案:

function CheckPrice() {
  
  const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Alerts");   
  const LastPrice = sh.getRange("C2").getValue();
  const EntryLimit = sh.getRange("J2").getValue();
  const StockName = sh.getRange("B2").getValue(); 

  // Check totals sales
  if (LastPrice < EntryLimit){
    // Fetch the email address
    const emailAddress = sh.getRange("L2").getValue();
  
    // Send Alert Email.
    const message = 'Ticker ' + StockName + ' has triggered the alert';
    const subject = 'Stock Alert';
    MailApp.sendEmail(emailAddress, subject, message);
    }
}

如果您希望在编辑特定单元格时发送 email,则需要将上述解决方案转换为onEdit(e)触发器。 如果你想要一个时基触发器,那么你可以直接使用上面的解决方案。

暂无
暂无

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

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