谷歌脚本代码发送电子邮件和隐藏行

时间:2015-02-07 14:30:54

标签: google-sheets

如果已编辑的单元格的值为" V"我有用于发送电子邮件并隐藏行的代码。或" v"并且用户确认一个人投票(由" V"或" v"表示)。我遇到了以下问题:

  1. 电子邮件未发送(注意:我已将onEdit函数定义为更改和编辑的触发器,因此我手动安装了它。)

  2. 该行未自动隐藏。

  3. 警告框似乎会发射两次。

  4. 这是我的代码:

         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('address@email.com', "Voter #" + N,"David, this is to tell you that "+ nme+ " just voted.");
        sheet.hideRow(r.row());
    
        } else {
    
        r.setValue("");
    
    
          }
         }
    

    任何帮助都会很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

如果你的原始代码有些小问题,那里有些东西,你真的不需要。有点混乱,

除了通过电子邮件发送外,我还能正常工作,我认为这是因为您无法通过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('address@email.com', "Voter #" + N,"David, this is to tell you that "+ nme+ " just voted.");


    } else {

    r.setValue("");


      }
     }