2016-02-03 35 views
2

我想創建帶有事件觸發器的Google表格。我正在使用Google Apps腳本。包含單元格值的電子郵件通知/主題

當單元格的值爲Ok時,將發送郵件警告同事(驗證)。

我發現了一個腳本,它的工作原理。

現在我希望郵件正文和郵件主題包含觸發器單元格的值爲OK的行的單元格值。

這裏是在片材的一個示例: Here is an example of the sheet

當我在K8寫「OK」,一郵件發送給同事。我希望正文郵件包含F8,G8和J8中的信息。同樣,如果我在K7中寫入「Ok」,我希望發送的郵件包含來自F7,G7和J7的信息。 (例如:「您的請求已被驗證的必要性,需要5級數量是1,價格是17,94€。」)

我使用的腳本:

/** 
* add trigger for onedit - 
* see menu -> Resouces -> Current project's triggers 
*/ 
function Initialize() { 

var triggers = ScriptApp.getProjectTriggers(); 

for(var i in triggers) { 
ScriptApp.deleteTrigger(triggers[i]); 
} 

ScriptApp.newTrigger("sendNotification") 
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) 
.onEdit() 
.create(); 

}; 


/** 
* 
*/ 


function sendNotification(e) { 


if("K" == e.range.getA1Notation().charAt(0)) { 

if(e.value == "ok") { 



//Define Notification Details 
    var recipients = "[email protected]"; 
    var subject = "Validation" ; 
    var body = "Achat valider, à procéder"; 

//Send the Email 
    MailApp.sendEmail(recipients, subject, body); 
} 
} 
} 

怎麼辦我得到Var subject和Var Body包含單元值?

回答

0

問題解決了。

要summurize,當你想通過電子郵件通知時,單元格的值更改,您希望郵件從你編輯同一行包含細胞值:

/** 
* add trigger for onedit - 
* see menu -> Resouces -> Current project's triggers 
*/ 
function Initialize() { 

var triggers = ScriptApp.getProjectTriggers(); 

for(var i in triggers) { 
ScriptApp.deleteTrigger(triggers[i]); 
} 

ScriptApp.newTrigger("sendNotification") 
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) 
.onEdit() 
.create(); 

}; 


/** 
* 
*/ 



function sendNotification(e) { 


if("L" == e.range.getA1Notation().charAt(0)) { 

if(e.value == "oui") { 



//Define Notification Details 
var recipients = "[email protected]"; 
var subject = "Request" + " - N° " + e.source.getRange('A'+ e.range.getRow()).getValue() ; 
var body = "lolcat : " + e.source.getRange('B'+ e.range.getRow()).getValue() ; 

//Send the Email 
MailApp.sendEmail(recipients, subject, body); 
} 
} 
} 

工作對我罰款。感謝您的幫助:)

1

簡短的回答

使用的Class Spreadsheet方法來獲取所需的範圍,然後Class RangegetValue()方法之一。

附圖示例

下面的代碼會顯示「烤麪包」(彈出窗口)中顯示的F列和相同的行編輯的單元格中的單元格的值。

function onEdit(e){ 
    var s = e.source; 
    var row = e.range.getRow(); 
    var fCell = s.getRange('F'+row); 
    var fValue = fCell.getValue(); 
    Spreadsheet.getActive().toast(fValue); 
} 

參考

+0

感謝您的幫助。 但是我怎麼用這個?我很新的excel腳本 我試過以下內容: //定義通知詳細信息 var recipients =「[email protected]」; var subject =「Demande validation achat」; var body =「XX」+ e.source.getrange('F'+ e.range.getRow())。getValue() 但它不起作用 – Lionelus

+1

1.我知道您使用的是「excel」作爲「電子表格」的同義詞。儘量避免這種情況,因爲這可能導致混淆。 2.在Google Apps腳本中,大小寫對於函數,變量和方法的名稱很重要。您的腳本不應使用'getrange',而應使用'getRange'。 –