当我在G列中的数据达到“ 0”且该电子邮件应发送到相应的电子邮件,并且内容也应对应于值0时,我正在尝试对该电子邮件进行分类。
我无法为其编写代码,因此请寻求帮助
function SendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet2=ss.getSheetByName('Sheet2');
var sheet4=ss.getSheetByName('Sheet4');
var monthsleft = sheet2.getRange(2,10).getValues();
var fullRange = sheet2.getRange("J2:J").getValues();
var scriptProperties = PropertiesService.getScriptProperties();
var p=sheet2.getLastRow();
for (var j = 2; j < p+1 ; j++ ) {
if (monthsleft ==0){
var n=sheet2.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet2.getRange(i,11).getValue();
var subject = sheet4.getRange(2,1).getValue();;
var message = sheet4.getRange(2,2).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}
}
}
}
答案 0 :(得分:0)
我不确定您从何处获取该代码,如果可能的话,通常应该引用代码的来源。
PropertiesService
与您的问题根本不相关,至少您没有提到它为何相关。for
循环。请查看this reference。我已经重写了许多旨在在每个工作日上午9点运行的代码。
首先,将代码替换为以下内容:
function SendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1"); // INSERT YOUR SHEET NAME HERE
var data = sheet.getDataRange().getValues(); // this gets all data in sheet
data.shift(); // removes the first row (headers)
data.forEach((row) => {
var monthsLeft = row[6]; // gets number from 7th column (Months left)
if (monthsLeft == 0) {
var email = row[2]; // gets email
var message = row[7]; // gets message
MailApp.sendEmail(email, "Notification", message);
}
});
}
function createTriggerWeekday() {
// Trigger every Monday at 09:00.
ScriptApp.newTrigger('SendEmail')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(9)
.create();
}
然后插入包含您发布的示例数据的工作表的正确名称。 它应该在同一列中,否则它将无法正常工作。即,G
列中剩余的月份等。通过从脚本编辑器中运行功能SendEmail
来测试该功能。这应该发送0
列中所有带有G
的行的电子邮件。
如果可以,请运行createTriggerWeekday
函数来设置time-driven trigger。
您可以通过script.google.com
管理触发器getDataRange
-我使用此方法将电子表格中的所有数据获取到Apps脚本中。这样,比每次发出请求都更快,更容易。它返回一个包含所有数据的二维数组。forEach
-我遍历了每一行。