Google工作表根据两个不同单元格中的文本发送电子邮件

时间:2017-03-15 11:57:07

标签: google-apps-script google-sheets

背景:我在学区工作,目前我正在尝试使用Google表格和Google表格来跟踪员工的出勤情况。我已经找到了表格,但是我正在尝试用表格做的事情超出了我的能力,尽管我愿意学习。

工作表末尾有两个单元格,供主管“批准”和“签署”请求。我希望一旦他们的主管在表格中回复,该表格通过电子邮件向请求休假的人发送电子邮件。

如果“已批准”=“是”&&在“签名”单元格中有文本,发送电子邮件(从表格中拉出)给请求者说“您的缺席请求已被批准用于以下日期:(来自电子表格的日期)。如果”未批准“&& “签名”单元格中有文字,发送电子邮件说“您的缺席请求在以下日期已被拒绝:(来自工作表的日期)。

这是电子表格中的link(已于3/20/17更新)。

仅供参考:我已经习惯了一点点JavaScript,但实际上不是非常多,所以请耐心等待!

更新:我用以下代码解决了我的第二个问题:

function onEdit() {
  // moves a row from "Form Responses 1" to "Signed" when the value in column 29 !==""
  // After row is moved it is deleted from "Form Responses 1"

  var sheetNameToWatch = "Form Responses 1";

  var columnNumberToWatch = 29; // column A = 1, B = 2, etc.
  var sheetNameToMoveTheRowTo = "Signed";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();


  if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() !== "") {

    var targetSheet = ss.getSheetByName("Signed");
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
    sheet.deleteRow(range.getRow());
  }
}

现在,我想使用时间驱动的触发器每天向每个提交者发送电子邮件,该提交者的提交已获批准,位于“已签名”表单中,并且尚未收到已提交的电子邮件。那么,现在我的问题是如何让两个触发器在同一张纸上工作?

1 个答案:

答案 0 :(得分:0)

您可以使用时间来检查这些批准以及每天结束的时间。确保您设置了某种时间戳,以便您知道过去的批准已完成,因此您不会发送多封电子邮件。检查link您现在还可以在编辑菜单中找到触发器资源(在底部)。如果您有任何问题请告诉我。我会帮你一把。