我这里有一个功能。
function approvedby() {
var approvedrange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Responses 1").getRange("E2:E500");
var approved = approvedrange.getValue();
if (approved == "A"){
var ss = SpreadsheetApp.getActiveSpreadsheet(); ss.setActiveSheet(ss.getSheetByName("Responses 1"));
var s = SpreadsheetApp.getActiveSheet();
var dataRange = s.getRange("A2:D500");
var data = dataRange.getValues();
for (i in data) {
var rowData = data[i];
var formno = rowData[1];
var description = rowData[2];
var plant = rowData[3];
var message = 'Form No: ' + formno + "\n\n" + 'Description: ' + description + "\n\n" + 'Plant: ' + plant + "\n\n";
var subject = "[Approved] Form"
var email = "[email protected]";
MailApp.sendEmail(email, subject, message);
}
}
}
我想要的是当我把Col E的值改为 "A "或 "B "时,邮件通知会自动发送到我的邮箱,邮件内容包括Col A -> Col D的内容,但当Col E发生变化时,邮件内容只显示Col A -> Col D的同一行。
例如:当E2变为 "A "时,邮件中的内容会自动包含在A列-> D列的内容,但当E列发生变化时,邮件中的内容会显示在A列-> D列的同一行。
到现在,用这个脚本,当我把Col E改成 "A "时,它把Col A到Col D的所有内容都发到了我的邮箱里,而不是Col E改变时的同一行。
所以,我在脚本方面是个新手,希望你能帮助我!谢谢。
下面的脚本将发送一封电子邮件,其中包含在列E中编辑的行对应的数据(即只有当你输入 "A "时)。
我将假设数据在以下列内,如果我的顺序不正确,你可以修改。
您还需要创建一个可安装的触发器。
进入您的 脚本编辑器 再到 编辑->当前项目触发器 和触发通道 添加触发器. 选择您的功能 (onEdit)并将事件类型设置为。在编辑.
如果你把F列留空,脚本也会写出邮件的发送时间(日期时间)。
脚本代码:
function onEdit(e) {
var ss = e.range.getSheet();
var range = e.range;
if(e.source.getSheetName() == "Responses 1" && e.range.getColumn() == 5 && range.getValue()=="A"){
var emailid= "[email protected]";
var subject = "[Approved] Form";
var formno = ss.getRange('B'+ range.getRow()).getValue();
var description = ss.getRange('C'+ range.getRow()).getValue();
var plant = ss.getRange('D'+ range.getRow()).getValue();
var message = "Form No: " +formno+ "\n\nDescription: "+description+ "\n\nPlant: "+plant;
var sent = ss.getRange("F" + range.getRow());
MailApp.sendEmail(emailid, subject, message);
// Write in Column F when the email was sent:
sent.setFontColor("#228B22");
sent.setValue("Latest update: Mail sent @" + new Date());
}
}
从你的问题中,我了解到这一点。
如果我的理解是正确的,请考虑修改你的代码如下。
function approvedby() {
var EMAIL_SENT = 'EMAIL_SENT';
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow() - 1; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 4);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
var emailMessage = "";
for (var i = 0; i < data.length; ++i) {
var row = data[i];
emailMessage = row[0] + row[1] + row[2] + row[3]; //Concatenate the values in column A to column D of the current row
var emailSent = row[5]; //Checks the email status of the row in column F
if (emailSent != EMAIL_SENT){
try{
MailApp.sendEmail(emailAddress, subject, emailMessage);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
}
catch(e){
sheet.getRange(startRow + i, 3).setValue(e.message);
}
}
}
}
包含一个onEdit触发器来调用approvedby()函数。
https:/developers.google.comapps-scriptarticlessending_emails。