时间触发器不调用函数

时间:2015-10-20 13:39:46

标签: javascript google-apps-script

在我的Google表格中有一个名为onOpen的函数,它将检查C列,如果C列中的值为已关闭,则该行应移至下一张表。

当我直接编辑工作表时,此功能正常工作。问题是功能不起作用如果我用AppSheet更新工作表,另外,时间触发器不会在Google工作表中运行。

function onOpen() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var r = s.getActiveRange();


  if (s.getName() == "Load Board" && r.getColumn() == 3 && r.getValue() == "Closed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Closed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }

}

1 个答案:

答案 0 :(得分:0)

我很难说出你是如何设置你的事件的。

以下是我如何设置一个简单的测试,以确保一切按预期工作。

首先,在附加到电子表格的脚本中设置测试功能:

function timeDrivenTestFunction() {
  var emailName = "Time Driven Admin";
  var replyTo = "no-reply@someDomain.com";
  var email = "yourEmail@someDomain.com";
  var body = "Timestamp: " + Date.now();
  var subject = "Timestamp Test";

  var advancedArgs = {
    name: emailName,
    replyTo: replyTo,
    to: email,
    subject: subject,
    htmlBody: body,
    noReply: true
  };

  var autoReplyErr = "Error in sending email message. No reply was sent";

  try {
    MailApp.sendEmail(advancedArgs);
  } catch (e) {
    MailApp.sendEmail(errorEmail, autoReplyErr);
  }      
}

现在您已经设置好了,可以为项目添加触发器。

第1步 - 转到Current project's triggers

Go To Current Project's Triggers

第2步 - 添加新触发器

Add new trigger

第3步 - 将测试功能设置为每分钟作为时间驱动的事件运行。然后单击通知以进入步骤4

Set function to run and notifications

第4步 - 设置错误通知,这样如果该功能无法执行,它会向您的Gmail发送一封电子邮件,告知您该功能未能执行,并会说明原因没有执行(即它会给你一些错误信息)

enter image description here

第5步 - 点击“确定”,然后选择“保存”,然后等待几分钟才能启动。它应该可以正常运行,您可能只需要在电子表格中设置权限,以便允许Google用于访问您的Gmail和发送电子邮件的文档。