我正在嘗試在 Apps 腳本中撰寫一些代碼,每次在電子表格中滿足條件時都會觸發電子郵件。
該電子表格包含不同轉基因魚系的年齡(魚的年齡在電子表格中自動更新),并且這些轉基因系中的每一個都有一個關聯的管理員和一個電子郵件地址。我的想法是使用 Apps 腳本觸發自動電子郵件,每當這些轉基因品系中的一個超過 2 年時,該腳本就會發送給指定的看護人。但是,我還沒有能夠使它作業。我不確定我的代碼的哪一部分阻止它正常作業。
下面我附上電子表格的外觀示例,以及我一直嘗試使用的代碼示例(我是編碼的初學者,因此可能存在許多基本錯誤在里面):

function fishalert() {
var subject = 'Fish aging alert';
var years = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("C2:C10").getValues();
if (years > 2){
for(r=2;r<20;r ){
var name = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(r,1).getValue();
var emailaddress = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(r,4).getValue();
var message = 'Line ' name ' is more than 2 years old';
MailApp.sendEmail(emailaddress, subject, message);
}
}
}
uj5u.com熱心網友回復:
滿足條件時發送電子郵件,每天采樣一次
function fishalert(e) {
if (e['day-of-week'] < 6) {//sends emails mon through fri between 9 and 10 in the morning
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const vs = sh.getRange(2, 1, sh.getLastRow() - 1, 4).getValues();
vs.forEach(r => {
if (r[2] > 2) {
MailApp.sendEmail(r[3], 'Fish aging alert', `Line ${r[0]} is more than 2 years old`);
}
});
}
}
運行一次:
function createTimeBasedTrigger() {
if(ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == 'fishalert').length == 0) {
ScriptApp.newTrigger('fishalert').timeBased().everyDays(1).atHour(9).create();
}
}
時間驅動觸發器
時間驅動觸發事件物件
類范圍 getValues() 方法
為了未來的增強
您可能只想以較低的頻率發送這些電子郵件,并且可能只在達到閾值時發送一次,并且您可能希望為每個唯一的電子郵件地址收集一封電子郵件。但這是對您當前問題的答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361447.html
