比较电子表格1和电子表格2,然后发送电子邮件问题

问题描述 投票:0回答:2

谁可以帮助我。如果我不能正确解释所有内容,我想对不起,因为英语不是我的母语。我正在做的是创建一个Google表单。这是示例。

第一部分:

Google Form 1 |电子表格1:在Google表单中,一旦输入信息。电子表格更新了每一行。 IT人员将根据报告解决问题。 IT人员完成后,将使用Google Form 2。

enter image description here

第二部分:

Google Form 2 |电子表格2:IT人员使用第二个Google表单关闭票证或待处理票证。如果IT人员提交了该表单,则它将发送电子邮件到在电子表格1中找到的电子邮件地址,并说出票证ID(在电子表格1和2中找到的列),说票证状态(在电子表格2中找到的列),例如在电子邮件上报告问题详细信息(在电子表格1上找到的列)。怎么办?

这是我编写的代码。

function myFunction(e) {

// declare variables
   var Timestamp = e.values[0];
   var TicketID = e.values[1];
   var Email = e.values[2];
   var Status = e.values[3];

var ss = SpreadsheetApp.openById(INSERT SPREADSHEET ID 1 INSIDE);
var DetailsCol = 6; // column number of Report Problem Details from Spreadsheet 1

/* This is the part I not know how to get. I want to compare Ticket ID 
from Spreadsheet 1 to Spreadsheet 2, and if they’re same, then it returns the value of 
“Report Problem Details” that is associate to the Ticket ID match, 
and save it to Spreadsheet 2 column F, then send email with this value.*/
var ss1value = ss.getDataRange().getValues(); 
  for(var i = 0; i<data.length;i++){
    if(data[i][1] == TicketID){  //start 0 index
        return i+1;
    }
  }
ss1value.getRange(i, 5).setValue(Report Problem Details);

// Email Send
   var Subject = "Ticket Status";
   var Message = 
 '<!DOCTYPE html> ' +
 "<html><head>" +
    "<table border='1' width='300'>" +  
    "<tr><td>Case ID</td><td>" + TicketID +
    "<tr><td>Status</td><td>" + Status +
    "<tr><td>Problem Description</td><td>" + 'Details' +
    "</table>" +
MailApp.sendEmail(Email, Subject, "", {htmlBody: Message});

}
google-apps-script google-form
2个回答
0
投票

您正在使用Google Forms和Google Sheets构建支持票证系统。

  • 用户向电子表格#1提交表格#1-票证号是唯一值;
  • IT支持人员响应该表格;
  • IT支持人员通过将表格#2提交给Spreadsheet#2来更新自己的记录;
  • 当IT支持人员通过“打开”以外的其他方式更新状态(在Spreadsheet#2上)时,应向用户发送电子邮件;
  • 由于Spreadsheet#2在表单响应中没有所有信息,因此必须将唯一的票证编号(来自Spreadsheet#2)与Spreadsheet#1上的票证编号相匹配,以检索yser名称,电子邮件和其他相关数据。

您在匹配两个电子表格之间的票证编号时遇到问题。

以下脚本演示了将值与数组匹配的方法。关键方面是:

  • 此脚本必须从Spreadsheet#2运行
  • [onEdit(e):该脚本必须处于onEdit触发器上,以便它检测支持更新状态(此逻辑不包含在此脚本中)]
  • [openById():请注意如何访问电子表格#1
  • var formValues = formRange.getValues();:从响应表中获取所有值
  • [var formTickets = formValues.map(function(e){return e[1];});:使用javascript map方法创建仅凭票号的临时数组
  • [var editedTicket = support.getRange(editedrow,2).getValue();:利用Event Objects]从电子表格#1获取票证号>
  • var result = formTickets.indexOf(editedTicket);// result is zero-based.:在表单票证编号的数组中找到支持票证编号的匹配项;这使用javascript indexOf方法。值-1表示不匹配,否则值为数组中票证编号基于zer0的索引。
  • var email = formValues[result][4];:一旦知道“结果”值,就可以从“表单值”中访问该票证的其余详细信息。

function onEdit(e){

  // Spreadsheet#2 containing the IT support logs 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var supportsheetname = "support";
  var support = ss.getSheetByName(supportsheetname);


  // Spreadsheet #1 containing the form responses
  var s2id = "<insert spreadsheetID here>";
  var s2 = SpreadsheetApp.openById(s2id);
  var formsheetname = "Form Responses 1";
  var form = s2.getSheetByName(formsheetname);

  // get data from forms
  var Avals = form.getRange("A1:A").getValues();
  var formLR = Avals.filter(String).length;
  var formRange = form.getRange(2,1,formLR-1,6);
  var formValues = formRange.getValues();
  //get the ticket Numbers in a temporary array
  var formTickets = formValues.map(function(e){return e[1];});//[[e],[e],[e]]=>[e,e,e]
  // Logger.log(formTickets);//DEBUG

  // get the row that was edited by the IT support
  var editedrow = e.range.getRow();
  var editedTicket = support.getRange(editedrow,2).getValue();
  Logger.log("the edited ticket is "+editedTicket);

  // find the ticket number in the responses
  var result = formTickets.indexOf(editedTicket);// result is zero-based.

  if (result != -1){
    // Logger.log("DEBUG: the result is "+result); // result is zero-based

  var name =  formValues[result][2];
  var phone = formValues[result][3];
  var email = formValues[result][4];
  var problem =   formValues[result][5];

  Logger.log("Name: "+name+", Phone:"+phone+", email:"+email+", problem:"+problem);
  // send an email using this information

  }
}

0
投票

您正在使用Google Forms和Google Sheets构建支持票证系统。您在匹配两个电子表格中的票证编号时遇到问题。

© www.soinside.com 2019 - 2024. All rights reserved.