2015-02-07 111 views
0

我有代碼,我想用來發送電子郵件和隱藏一行,如果編輯單元格的值是「V」或「V」,並且用戶確認一個人投票(如「V」或「v」所示)。我遇到了以下問題:谷歌腳本代碼發送電子郵件和隱藏行

  1. 的郵件沒有發送(注:我已經定義了onEdit功能作爲變革和編輯觸發,所以我手動安裝)

  2. 該行不會自動隱藏。

  3. 該警報框似乎發生兩次。

這裏是我的代碼:

 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(""); 


     } 
    } 

任何援助將是偉大的!謝謝!

+0

不熟悉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

回答

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('[email protected]', "Voter #" + N,"David, this is to tell you that "+ nme+ " just voted."); 


    } else { 

    r.setValue(""); 


     } 
    }