【问题标题】:Google Sheet - Send Email谷歌表格 - 发送电子邮件
【发布时间】:2021-01-07 13:44:05
【问题描述】:

每次条件成立时,我都需要我的谷歌表格发送电子邮件。 在这种情况下,每次 C2 的值都低于 J2 的值。 在 L2 单元格上有电子邮件地址。

代码(网上找到,刚刚编辑)

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

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

在 L2 上,我输入了我授予权限的相同电子邮件地址(我向自己发送电子邮件)。 我什至尝试使用我拥有的辅助电子邮件地址。

你能告诉我有什么问题吗?

【问题讨论】:

  • 您打算如何触发该功能? onEdit 仅在用户编辑时触发。
  • 项目的触发器每小时运行一次。

标签: google-apps-script google-sheets gmail-api


【解决方案1】:

问题:

  • 查看定义LastPrice的代码的第一行, EntryLimitStockName。他们都来自同一个 范围: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);
    }
}

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

【讨论】:

  • 感谢您的帮助,现在可以使用了。如果单元格不同,则认为选择多个活动电子表格不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多