【问题标题】:Google Scripts On Edit function [duplicate]Google Scripts On Edit 功能 [重复]
【发布时间】:2021-01-25 08:20:58
【问题描述】:

当我单独破坏它以复制记录然后发送邮件时,我的下面的代码可以正常工作。

我需要在 onedit 复制记录后运行发送邮件功能。该代码仅复制记录但不发送邮件。邮件代码在手动执行时有效。

function onEdit(event){ var ss = SpreadsheetApp.getActiveSpreadsheet();var s = event.source.getActiveSheet(); var r = event.source.getActiveRange();

if(s.getName() == "UK STOCK ALERTS" && r.getColumn() == 5 && r.getValue() == "Back Orders Accepted") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("AlertMailOut");  
var target = targetSheet.getRange(1,16)    
s.getRange(row, 1, 1, numColumns).copyTo(target);        

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AlertMailOut");  var startRow = 2;  var numRows = 40;  var dataRange = sheet.getRange(startRow, 1, numRows, 100); var data = dataRange.getValues(); for (var i = 0; i < data.length; ++i) {var row = data[i]; var emailAddress = row[0];var message = row[1]; // Second column
var emailSent = row[4]; // Third column
if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
  var subject = 'Brick Fanatics Stock Update';
  MailApp.sendEmail(emailAddress, subject, message);
   SpreadsheetApp.flush();
} } } } 

【问题讨论】:

  • 如果您使用onEdit作为简单触发器,请使用OnEdit的可安装触发器。因为我认为您的问题的原因是MailApp.sendEmail 与简单触发器一起使用。 Related question
  • 顺便说一句,当您使用可安装的 OnEdit 触发器时,我建议将函数名称从 onEdit 重命名为其他人。因为onEdit这个函数名是用于简单触发器的。因此,当可安装的 OnEdit 触发器安装到 onEdit 的函数时,该函数会以异步处理运行 2 次。 Ref所以请小心。

标签: google-apps-script


【解决方案1】:

您需要以installable trigger 而不是simple trigger 的形式执行此函数。

待办事项:

  • 将您的函数重命名为其他名称
  • 通过选择添加触发器,从Triggers 选项卡手动安装 onEdit 触发器

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多