Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 扣动扳机_Google Apps Script_Triggers - Fatal编程技术网

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'){
//在这里调用您的发送电子邮件功能
}否则{
//询问是否应立即发送电子邮件
}
}
}