Javascript 如何在按下tab按钮或";时自动发送电子邮件;指定的;值作为状态列中的输入提供
我在google sheets上开发了这个平台,如果状态栏中的“Status”列设置为“Assigned”,我必须创建一个宏,用于向相应的人发送电子邮件Id 我已经开发了一个代码来拉出宏函数Javascript 如何在按下tab按钮或";时自动发送电子邮件;指定的;值作为状态列中的输入提供,javascript,google-apps-script,google-sheets,excel-formula,google-sheets-formula,Javascript,Google Apps Script,Google Sheets,Excel Formula,Google Sheets Formula,我在google sheets上开发了这个平台,如果状态栏中的“Status”列设置为“Assigned”,我必须创建一个宏,用于向相应的人发送电子邮件Id 我已经开发了一个代码来拉出宏函数 Name |DateTask|Priority|Description| Email |Email Notify|Status Baishnav |01/05/20|High |devlopment|dasr@gmail.com| Yes | Assigned
Name |DateTask|Priority|Description| Email |Email Notify|Status
Baishnav |01/05/20|High |devlopment|dasr@gmail.com| Yes | Assigned
我不确定你到底有什么问题。我为你重新设计了一个新的功能。 不要忘记将我的代码Sheet1中的工作表名称更改为所需的名称 试试这个:
/** @OnlyCurrentDoc */
function macros() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('G12').activate();
var startRow = 2;
var numRows =20;
var count = 2;
var dataRange = spreadsheet.getRange(startRow, 1, numRows, 7)
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var name = row[0];
var dateOfAssignment = row[1];
var taskP = row[2];
var td = row[3];
var ts = row[6];
var email = row[4];
var isSent = row[5];
if( ts == "Assigned" && isSent != "Yes"){
var message = "Hey" + row[0] + "\n Your assigned task on :"+ dateOfAssignment +"\n Task description " + td + "\n Regards Baishnav";
var subject = "Sending emails from Spreadsheet";
MailApp.sendEmail(email, subject,message);
var cellstring = "G" + count;
var tosetFlag = sheet.getRange(cellstring).setValue("Yes");
}
count++;
}
};
函数sendmail(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(“Sheet1”);
var sh_s=sh.getLastRow();
var Name=sh.getRange('A2:A'+sh_.s).getValues().flat([1]);
var DateTask=sh.getRange('B2:B'+sh_.s).getValues().flat([1]);
var Priority=sh.getRange('C2:C'+sh_s).getValues().flat([1]);
var Description=sh.getRange('D2:D'+sh_s).getValues().flat([1]);
var Email=sh.getRange('E2:E'+sh_s).getValues().flat([1]);
var isSent=sh.getRange('F2:F'+sh_.s).getValues().flat([1]);
var Status=sh.getRange('G2:G'+sh_s).getValues().flat([1]);
对于(变量i=0;ionEdit(e)
触发器的帮助,然后使用相应的逻辑将sendEmail调整为sendEmail(e),以捕捉刚刚更改的行。@Aerials肯定可以进行改进。OP提供的脚本(他没有解释什么有效,什么无效)基于静态数据逻辑。我可以基于onEdit函数为他重建一个新项目,但这不是stackoverflow。他应该首先朝着这个方向努力。如果我错了,请纠正我。你是对的,我想向你提及这一点,以补充你的答案,因为你已经着手“完全重新设计了一些有效的东西”。事实上,这是真的,不幸的是,我现在没有时间去做。请随意使用我的代码并提供onEdit解决方案,我会立即投票支持:)我相信OP也会从中受益。
function sendEmail() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet1");
var sh_s = sh.getLastRow();
var Name = sh.getRange('A2:A'+sh_s).getValues().flat([1]);
var DateTask = sh.getRange('B2:B'+sh_s).getValues().flat([1]);
var Priority = sh.getRange('C2:C'+sh_s).getValues().flat([1]);
var Description = sh.getRange('D2:D'+sh_s).getValues().flat([1]);
var Email = sh.getRange('E2:E'+sh_s).getValues().flat([1]);
var isSent = sh.getRange('F2:F'+sh_s).getValues().flat([1]);
var Status = sh.getRange('G2:G'+sh_s).getValues().flat([1]);
for ( var i=0 ; i < Name.length ; i++){
if (Status[i]=='Assigned' && isSent[i] != "Yes"){
var message = "Hey" + Name[i] + "\n Your assigned task on :"+ DateTask[i] +"\n Task description " + Description[i] + "\n Regards Baishnav";
var subject = "Sending emails from Spreadsheet";
MailApp.sendEmail(Email[i], subject, message);
sh.getRange(i+2,6).setValue('Yes');
}
}
}