[英]Compare timestamp in two different formats - GAS
我正在使用Mogsdad 在此处发布的增强型工作流程脚本。
我已经设法解决了一些问题,但目前我仍然遇到的一个问题是本节中出现的错误-
// Record approval or rejection in spreadsheet
var row = ArrayLib.indexOf(data, 0, timestamp);
if (row < 0) throw new Error ("Request not available."); // Throw error if request was not found
sheet.getRange(row+1, approvalCol).setValue(e.parameter.approval);
我收到“请求不可用”错误,因为ArrayLib.indexOf对象正在比较从同一来源通过两个不同的“路线”呈现的时间戳。
来自“ timestamp”变量的时间戳如下所示:“ 17/03/2015 18:00:11”
...并且'data'变量中包含的时间戳(应该与timestamp变量匹配)看起来像这样-“ Tue Mar 17 2015 00:30:10 GMT-0700(PDT)”。
我假设两种不同的格式导致ArrayLib.indexOf对象返回“ -1”结果,并因此返回错误消息。
我对如何使匹配成功工作有什么想法?
为时间戳值创建一个新的Date对象,以便可以确保可以将它们进行比较。 该代码应如下所示:
var dateFromTimestamp = new Date(timestamp);
在浏览了其他几篇文章之后,我想出了一个解决方案,该解决方案似乎工作得很好,并且克服了使用时间戳的问题。
我在创建工作单编号的响应表的第一列中放置了一个数组公式-= ArrayFormula(if(B2:B,“ AFR”&text(row(A2:A)-1,“ 00000”),iferror(1 / 0)))
然后,我检索票证编号(var cellVal)并将其与电子邮件一起发送。 到目前为止,回复电子邮件每次都会将批准值带到正确的行。
function sendEmail(e) {
// Response columns: Timestamp Requester Email Item Cost
var email = e.namedValues["Requester Email"];
var item = e.namedValues["Item"];
var cost = e.namedValues["Cost"];
//var timestamp = e.namedValues["Timestamp"];
var row = e.range.getRow();
var seq = e.values[1];
var url = ScriptApp.getService().getUrl();
var sheet = SpreadsheetApp.openById('1pFL0CEW5foe8nAtk0ZwwTleYrBn2YulMu_eKPDEFQaw').getSheetByName("Form Responses 1");
var range = sheet.getDataRange();
var cellval = range.getCell(row,1).getValue();
//var origMail = range.getCell(row,3).getValue();
Logger.log(cellval);
//Logger.log(origMail);
var options = '?approval=%APPROVE%&reply=%EMAIL%'
.replace("%EMAIL%",e.namedValues["Requester Email"])
var approve = url+options.replace("%APPROVE%","Approved")+'&row='+row+'&cellval='+cellval;
var reject = url+options.replace("%APPROVE%","Rejected")+'&row='+row+'&cellval='+cellval;
var html = "<body>"+
"<h2>Please review</h2><br />"+
"Request from: " + email + "<br />"+
"Ticket No: " + cellval + "<br />"+
"For: "+item +", at a cost of: $" + cost + "<br /><br />"+
"<a href="+ approve +">Approve</a><br />"+
"<a href="+ reject +">Reject</a><br />"+
"</body>";
MailApp.sendEmail(Session.getEffectiveUser().getEmail(),
"Approval Request",
"Requires html",
{htmlBody: html});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.