比较两种不同格式的时间戳-GAS
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"变量中包含的时间戳(应与时间戳变量匹配)如下所示-"Tue Mar 17 2015 00:30:10 GMT-0700(PDT)"。
我假设这两种不同的格式导致ArrayLib.indexOf对象返回"-1"结果,从而返回错误消息。
有什么想法吗?我需要做什么才能让匹配成功?
为时间戳值创建一个新的Date对象,这样可以确保它们可以进行比较。代码应该看起来像:
var dateFromTimestamp = new Date(timestamp);
在浏览了其他几篇文章后,我提出了一个似乎运行良好的解决方案,并克服了使用时间戳的问题。
我在创建票号的响应表的第一列中放入了一个数组公式-=数组公式(如果(B2:B,"AFR"&text(行(A2:A)-1,"00000"),iferor(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});
}
相关文章:
- 如何每10.6秒从时间戳增加+1
- 使用AngularJS从时间戳中获取工作日
- 将时间戳转换为java中的ISO860,
- Javascript Unix时间戳转换
- JavaScript JSON关联对象键和值都作为日期时间戳
- 时间戳与mongoskin如何
- 用时间戳获取两个不同日期之间的时间差
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 转换unix时间戳转换
- 带有unix时间戳的d3.js平分线
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- javascript时间戳插入字符串变量
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 事件时间戳谷歌分析
- 时间戳到文本
- Unix时间戳从现在输出为1970
- 如何使用javascript在嵌入式youtube视频上创建可点击的时间戳链接
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 比较两种不同格式的时间戳-GAS