谷歌脚本代码发送电子邮件和隐藏行
问题描述:
我有代码,我想用来发送电子邮件和隐藏一行,如果编辑单元格的值是“V”或“V”,并且用户确认一个人投票(如“V”或“v”所示)。我遇到了以下问题:谷歌脚本代码发送电子邮件和隐藏行
的邮件没有发送(注:我已经定义了onEdit功能作为变革和编辑触发,所以我手动安装)
该行不会自动隐藏。
该警报框似乎发生两次。
这里是我的代码:
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var r=event.range
var c=r.getA1Notation();
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Did This Voter Vote?', r.offset(0,-1,1).getValue(), ui.ButtonSet.YES_NO);
var sb=response.getSelectedButton();
var v=r.getValue();
if ((v=="v" || v=="V") && sb == ui.Button.YES) {
var N=r.offset(0,-2,1).getValue();
var nme=r.offset(0,-1,1).getValue();
MailApp.sendEmail('[email protected]', "Voter #" + N,"David, this is to tell you that "+ nme+ " just voted.");
sheet.hideRow(r.row());
} else {
r.setValue("");
}
}
任何援助将是伟大的!谢谢!
答
把你原来的代码弄了一把,里面有一些位,你真的不需要。所有有点令人困惑,
我得到的一切工作除了电子邮件,我认为这是因为你不能发邮件onEdit事件。它没有正确的授权。
解决办法是将您的“电子邮件”数据推送到工作表。 然后使用一个简单的脚本发送电子邮件给你,也许在一个计时器。
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var r=event.source.getActiveRange();
var c=r.getA1Notation();
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Did This Voter Vote?', r.offset(0,-1,1).getValue(), ui.ButtonSet.YES_NO);
Logger.log(response);
var sb=response.getSelectedButton();
var value=r.getValue();
if ((value=="v" || value=="V") && sb == ui.Button.YES) {
var N=r.offset(0,-2,1).getValue();
var nme=r.offset(0,-1,1).getValue();
sheet.hideRow(r);
// MailApp.sendEmail('[email protected]', "Voter #" + N,"David, this is to tell you that "+ nme+ " just voted.");
} else {
r.setValue("");
}
}
不熟悉hideRow。 但在阅读[链接](https://developers.google.com/apps-script/reference/spreadsheet/sheet#hideRow(Range)) 或许代替 'sheet.hideRow(r.row()); ' 这可能会起作用吗? 'sheet.hideRow(r);' – Munkey 2015-02-07 20:10:38