脚本sendNotification无法正常工作

时间:2016-08-01 11:16:07

标签: google-apps-script google-sheets

我正在尝试制作一个脚本,以便在检查电子表格后,每天发送一封电子邮件,这两个条件。如果第一个条件为True,则电子邮件的数据将为“subject1”,否则为“subject2”。

当我手动运行时,脚本可以正常工作,但是,通过触发器,我想通过电子邮件发送的值,根本不会出现在正文中。

如果手动操作完美,我无法理解可能出现的问题。 触发器是“时间驱动/小时/每12小时”。 任何人都可以帮助我吗?

这是代码:

function sendNotificationD() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();

  var column = ss.getRange('o13');
  var cell = sheet.getRange('o13');
  var value = column.getValue();
  var emailSheet = ss.getSheetByName("totais");
  var emails = emailSheet.getRange("q1:s1").getValues();

  var range_bill_com = sheet.getRange('o13');

  if (range_bill_com.getValue() !='CONGRATS'){
    var recipients = emails;
    var message = '';
    var subject = 'subject1 here';
    var body = 'IMPORTANT: ' + '\n\n' + 'your goal is' + ' ' + value;
    MailApp.sendEmail(recipients, subject, body);
    }

   if (range_bill_com.getValue() =='CONGRATS'){
    var recipients = emails;
    var message = '';
    var subject = 'subject2 here';
    var body = 'you have reached your goal';
    MailApp.sendEmail(recipients, subject, body);
  }
};

1 个答案:

答案 0 :(得分:2)

在这一行:

var sheet = ss.getActiveSheet();

方法getActiveSheet()获取当用户打开时在电子表格UI中显示的活动工作表,但是当它从时间驱动的触发器运行时没有活动工作表,因此您需要指示在工作表中,您可以使用getSheetByName()getSheets()该行应如下所示:

var sheet = ss.getSheetByName("Sheet1");

var sheet = ss.getSheets()[0]; // Index of the tab, 0 will return the first one

如果您手动或从触发器触发该功能,该功能仍然有效。