2016-07-26 35 views
0

我有一個Google表單,我希望在一列大於另一列時生成電子郵件警報。具體來說,列F>欄G.這是我到目前爲止,任何意見將不勝感激,因爲我沒有太多的技能寫作功能。Google腳本根據Google表格中的單元格發送條件電子郵件

function readCell() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Watch list"); 
    var value = sheet.getRange("F2").getValue(); 
    var value1 = sheet.getRange("G2").getValue(); 
    if(value>value1) MailApp.sendEmail('[email protected]', 'subject',  'message'); 
}; 

當前這只是試圖比較單元格F2和單元格G2。有沒有辦法讓函數比較整個F列與G列,併爲Fx> Gx的每個個案生成一封電子郵件?

謝謝!

回答

1

你必須在整個範圍內循環。
第一而不是讓一個單元格的內容,你需要把所有的列的內容:

var value = sheet.getRange("F2").getValue(); 

成爲

var values = sheet.getRange("F2:F").getValues(); 

(同爲值1)
那麼你需要創建一個空表,將收集結果:

var results = []; 

現在你需要循環通過所有值:

for(var i=0;i<values.length;i++){ 
//do the comparaison and store result if greater for example 
} 

然後您可以發送結果。 都放在一起給它這樣的事情:

function readCell() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Watch list"); 
    var values = sheet.getRange("F2:F").getValues(); 
    var value1s = sheet.getRange("G2:G").getValues(); 
    var results = []; 
    for(var i=0;i<values.length;i++){ 
     if(values[i]<value1s[i]){ 
     results.push("alert on line: "+(i+2)); // +2 because the loop start at zero and first line is the second one (F2) 
     } 
    } 
    MailApp.sendEmail('[email protected]', 'subject',  results.join("\n")); 
}; 

如果要觸發功能可自動您還需要改變你調用電子表格(而不是getActive方式....你需要使用openById)

+0

這絕對是正確的軌道! if(values [i] value1s [i]){因爲我們希望F> G的值正確嗎? 雖然結果有點奇怪。我編輯了列值,以便它們都應該觸發警報,但只有一些是。更奇怪的是,當我將所有的F列值設置爲300時,我得到的警報不同於所有F列值設置爲200時的警報。任何想法@Harold? –

相關問題