我有一个公式,可以根据Google表单的响应来计算数字。根据这个数字,我要使用发件人提供的详细信息以及另一个单元格中的预先键入的电子邮件来发送电子邮件。
在Col1中是时间戳记,在col14中是员工开始日期。我在Col33中的公式可以计算出提交表格时他们被雇用了多少天。
如果天数少于182,我想向该人发送电子邮件。
我有一封预先输入的电子邮件,可以将其放置在任何地方。目前,我在col36的所有单元中都拥有它。该电子邮件地址将在column32中。
我尝试了许多不同的代码,无论我设置的触发器是什么,它们都不发送电子邮件。我对应用程序脚本有非常基本的了解,因此我当前的代码可能是完全错误的,但它应该大致显示出我的意思。
function sendEmail() {
var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues()
for (i in values.length) {
var data = values[i][33];
var emailAddress = values[i][32];
var message = values[i][36];
if (data < 182); {
MailApp.sendEmail(emailAddress, "Flexible Working Request", message);
}
}
}
当前结果只是删除了新表单响应行上col33,Col34和Col36中的数据。
很抱歉,如果这个问题在其他地方得到回答,我发现我无法解决类似问题的任何其他答案。
答案 0 :(得分:0)
您无需遍历所有列即可获得单个单元格值,因此无需进行for
循环。您可以直接使用以下方法进行操作:
var sheet = SpreadsheetApp.getActiveSheet().getSheets[0];
var cell = ["A33"];
var days_value = sheet.getRange(cell).getValue();
然后,您只需设置一个if
条件即可发送电子邮件:
if (days_value < 182){
MailApp.sendEmail(emailAddress, "Flexible Working Request", message);
}
希望这会有所帮助
答案 1 :(得分:0)
我找到了一个在Google Apps脚本方面表现更好的人来帮忙
这与Google表单将公式向下推到一侧有关
所以我们不得不将计算天数的公式移到另一张纸上,然后使用这个有效的公式
function sendEmailv2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form responses
1');
var scrip = Session.getScriptTimeZone();
var date = sheet.getRange(sheet.getLastRow(),14).getValue();
var sub = sheet.getRange(sheet.getLastRow(),1).getValue();
Logger.log(date);
var fortmat = Utilities.formatDate(new Date(date), scrip, "dd/MM/yyyy");
var Subfortmat = Utilities.formatDate(new Date(sub), scrip, "dd/MM/yyyy");
var emailAddress = sheet.getRange(sheet.getLastRow(),32).getValue();
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet4');
var message = sheet2.getRange(1,1).getValue();
var days = sheet2.getRange(sheet2.getLastRow(),2).getValue();
if (days<182){
MailApp.sendEmail(emailAddress, "Flexible Working Request", message,{noReply:true});
}
}
谢谢!