Google App脚本onEdit? [英] Google App script onEdit?

查看:156
本文介绍了Google App脚本onEdit?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尝试自动向onEdit发送电子邮件协作者电子邮件。在测试中明确运行脚本时,我成功地通过电子邮件发送了邮件,但onEdit事件似乎从未被解雇(甚至没有看到日志消息)。脚本看起来很简单。

  function onEdit(e){
var sheet = e.source;
var viewers = sheet.getViewers();
var ct = viewers.length;
var recipients = [];
for(var i = 0; i recipients.push(viewers [i] .getEmail());
};
var subject ='更新为'+ sheet.getName();
var body = sheet.getName()+'已更新。访问'+ sheet.getUrl()+'查看更改'+ e.range;

Logger.log('Running onedit');

MailApp.sendEmail(收件人,主题,正文);
};


解决方案

简单的onEdit函数具有非常有限的可能因为它在没有潜在用户授权的情况下运行。你必须创建另一个函数并在这个函数上设置一个特定的触发器(可安装的触发器)

请参阅这在此处的文档



编辑:这里是您的代码工作:

 函数sendAlert(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell()。getA1Notation()
var viewers = ss.getViewers();
var ct = viewers.length;
var recipients = [];
for(var i = 0; i recipients.push(viewers [i] .getEmail());
};
var subject ='更新为'+ sheet.getName();
var body = sheet.getName()+'已更新。访问'+ ss.getUrl()+'以查看单元格+ cell的更改;
MailApp.sendEmail(收件人,主题,正文);
};


really feel like I'm missing something with the Spreadsheet object scripts.

I'm trying to automatically email collaborators onEdit. I successfully emailed when explicitly runnign the script in test, but the onEdit event never seems to get fired (not seeing log messages even). Script seems pretty straightforward.

function onEdit(e) {
  var sheet = e.source;
  var viewers = sheet.getViewers();
  var ct = viewers.length;
  var recipients = [];
  for(var i=0;i<ct;i++){
    recipients.push(viewers[i].getEmail());
  };
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated.  Visit ' + sheet.getUrl() + ' to view the changes ' + e.range;

  Logger.log('Running onedit');

  MailApp.sendEmail(recipients, subject, body);
};

解决方案

the simple onEdit function has a very limited set of possible actions since it runs without the authorization of the potential user. You have to create another function and set a specific trigger on this function.(installable trigger)

See this post as an example. It shows examples of simple onEdit and installable edit (for email send) This is explained in the documentation here.

EDIT : here is your code working :

function sendAlert() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation()
  var viewers = ss.getViewers();
  var ct = viewers.length;
  var recipients = [];
  for(var i=0;i<ct;i++){
    recipients.push(viewers[i].getEmail());
  };
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated.  Visit ' + ss.getUrl() + ' to view the changes on cell ' + cell;
  MailApp.sendEmail(recipients, subject, body);
};

这篇关于Google App脚本onEdit?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆