Google apps script 扣动扳机
我需要一个(或两个)触发器,但我做错了什么。或者我需要调整我的代码 我希望在更新电子表格中的一行时自动发送电子邮件。更新的三列是注释、状态和分辨率。现在,在我的测试版本中,只要我更改其中任何一列,它就会发送一封电子邮件。这很好,如果我只更新一件事。但是如果我想一次添加一个便条、更改状态和输入一个解决方案,它会发送三封单独的电子邮件。我在提交表单时发送电子邮件的第一个触发器非常有效 这是我的密码。任何帮助都将不胜感激 附言:我相信有更干净的方法可以做到这一点,但我从过去就熟悉这一点。时间太长了,我都不记得了Google apps script 扣动扳机,google-apps-script,triggers,Google Apps Script,Triggers,我需要一个(或两个)触发器,但我做错了什么。或者我需要调整我的代码 我希望在更新电子表格中的一行时自动发送电子邮件。更新的三列是注释、状态和分辨率。现在,在我的测试版本中,只要我更改其中任何一列,它就会发送一封电子邮件。这很好,如果我只更新一件事。但是如果我想一次添加一个便条、更改状态和输入一个解决方案,它会发送三封单独的电子邮件。我在提交表单时发送电子邮件的第一个触发器非常有效 这是我的密码。任何帮助都将不胜感激 附言:我相信有更干净的方法可以做到这一点,但我从过去就熟悉这一点。时间太长了,我
function formSubmitReply(e) {
var userEmail = e.values[3];
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
// Set the status of the new ticket to 'New'.
// Column F is the Status column
sheet.getRange("F" + lastRow).setValue("New");
// Calculate how many other 'New' tickets are ahead of this one
var numNew = 0;
for (var i = 2; i < lastRow; i++) {
if (sheet.getRange("F" + i).getValue() == "New") {
numNew++;
}
}
MailApp.sendEmail(userEmail,
"Helpdesk Ticket #" + lastRow,
"Thanks for submitting your issue. \n\nWe'll start " +
"working on it as soon as possible. You are currently " +
"number " +
(numNew + 1) + " in the queue. \n\nHelp Desk.",
{name:"Help Desk"});
}
function emailStatusUpdates() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveRange().getRowIndex();
var userEmail = sheet.getRange("D" + row).getValue();
var subject = "Helpdesk Ticket #" + row;
var body = "We've updated the status of your ticket.\n\nStatus: " + sheet.getRange("F" +
row).getValue();
body += "\n\nNotes: " + sheet.getRange("E" + row).getValue();
body += "\n\nResolution: " + sheet.getRange("G" + row).getValue();
MailApp.sendEmail(userEmail, subject, body, {name:"Help Desk"});
}
function onOpen() {
var subMenus = [{name:"Send Status Email", functionName: "emailStatusUpdates"},
{name:"Schedule Appointment", functionName: "scheduleAppointment"},
{name:"Push to KB", functionName: "pushToKb"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Help Desk Menu", subMenus);
}
函数formSubmitReply(e){
var userEmail=e.values[3];
var sheet=SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getLastRow();
//将新票证的状态设置为“新建”。
//F列是状态列
sheet.getRange(“F”+lastRow).setValue(“新”);
//计算出还有多少张“新”票比这张票领先
var numNew=0;
对于(变量i=2;i
当您只需要编辑一个单元格,但当您需要编辑两个或更多单元格时,电子邮件应该一直发送到您结束编辑所有相关单元格时,您似乎正在使用编辑时触发器发送电子邮件
实现所需行为的一种方法是添加一个或多个条件来发送电子邮件
实现上述功能的一种方法是添加一个辅助列,以设置是否应立即发送电子邮件。把这个叫做“Hold”并添加一个复选框怎么样
这只是一个简单的示例,说明了如何将上述内容作为installeon-edit触发器实现
/**
* Columns C,D,E are notes, status and resolution respectively
* Column F is Hold
*/
function sendUpdate(e){
if(e.range.columnStart > 2 && e.range.columnStart < 6 || e.range.columnStart === 6){
var hold = e.range.getSheet().getRange(e.range.rowStart, 6).getValue();
if( hold !== 'TRUE'){
// Call here your send email function
} else {
// Ask if the email should be sent now
}
}
}
/**
*C、D、E列分别为注释、状态和分辨率
*F列被保留
*/
函数sendUpdate(e){
如果(e.range.columnStart>2&&e.range.columnStart<6 | | e.range.columnStart==6){
var hold=e.range.getSheet().getRange(e.range.rowStart,6.getValue();
如果(保持!='TRUE'){
//在这里调用您的发送电子邮件功能
}否则{
//询问是否应立即发送电子邮件
}
}
}
当您只需要编辑一个单元格,但当您需要编辑两个或更多单元格时,电子邮件应该一直发送到您结束编辑所有相关单元格时,您似乎正在使用编辑时触发器发送电子邮件
实现所需行为的一种方法是添加一个或多个条件来发送电子邮件
实现上述功能的一种方法是添加一个辅助列,以设置是否应立即发送电子邮件。把这个叫做“Hold”并添加一个复选框怎么样
这只是一个简单的示例,说明了如何将上述内容作为installeon-edit触发器实现
/**
* Columns C,D,E are notes, status and resolution respectively
* Column F is Hold
*/
function sendUpdate(e){
if(e.range.columnStart > 2 && e.range.columnStart < 6 || e.range.columnStart === 6){
var hold = e.range.getSheet().getRange(e.range.rowStart, 6).getValue();
if( hold !== 'TRUE'){
// Call here your send email function
} else {
// Ask if the email should be sent now
}
}
}
/**
*C、D、E列分别为注释、状态和分辨率
*F列被保留
*/
函数sendUpdate(e){
如果(e.range.columnStart>2&&e.range.columnStart<6 | | e.range.columnStart==6){
var hold=e.range.getSheet().getRange(e.range.rowStart,6.getValue();
如果(保持!='TRUE'){
//在这里调用您的发送电子邮件功能
}否则{
//询问是否应立即发送电子邮件
}
}
}