Google电子表格 - 有人在连续编辑单元格时通过电子邮件通知

时间:2016-01-06 17:38:26

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

如果有人编辑了第一行,则应将电子邮件发送给A.如果有人编辑了第二行,则应将电子邮件发送给B,依此类推。

if (edited cell was in range - first row) {
   //do something } 
if (edited cell was in range- second row) {
   //do something }

等等。

已经尝试过Stack溢出中可用的脚本,所有脚本都基于活动单元格。如果有人拖动行范围内的值,该怎么办?该脚本仅向第一个活动行单元发送电子邮件。

找到了这个,但是当在单元格上拖动值并且我需要超过每行的范围时失败。

function emailNotification() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var cellvalue = ss.getActiveCell().getValue().toString();
var recipient = "me@gmail.com";
var subject = 'Update to '+sheet.getName();

MailApp.sendEmail(recipient, subject, "roster update");
};

1 个答案:

答案 0 :(得分:1)

Apps脚本具有简单的编辑事件触发器 https://developers.google.com/apps-script/guides/triggers/
来自onEdit文档:

function onEdit(e){
  // Set a comment on the edited cell to indicate when it was changed.
  var range = e.range;
  range.setNote('Last modified: ' + new Date());
}  

你会注意到这个触发器被触发时它传递onEdit一个包含这个编辑的大量信息的对象。您可以在以下位置查看对象:
https://developers.google.com/apps-script/guides/triggers/events

此对象包含编辑的Range对象。范围对象文档位于: https://developers.google.com/apps-script/reference/spreadsheet/range

在范围内,您可以使用getA1Notation()方法获取编辑哪些单元格,使用getValues()方法编辑值。