Google 脚本将明天的日期与 google 表单日期输入匹配
Google script matching tomorrows date with a google forms date input
我试图将明天的日期与通过 google 表单提交的日期相匹配。在记录器中它似乎匹配但它不会记录 YES 并且不会评估为真。
我的努力:
function ArchiveTuesdayOrder() {
let dt = new Date();
let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
const date = new Date();
date.setDate(date.getDate() + 1);
var tom = Utilities.formatDate(date, "America/New_York", 'EEE MMM dd yyyy HH:mm:ss Z');
var tomDate = Utilities.formatDate(date, "America/New_York", "MM-dd-yyyy");
var sheetActive = SpreadsheetApp.openById("xxxxxxxxxxxxxx");
var sheet = sheetActive.getSheetByName("xxxxxxxxxxxxxx");
//var orderDate = sheet.getRange(2,3,100).getValues();
var orderdateRange = sheet.getRange(2, 4, 100);
var orderDate = orderdateRange.getValues();
Logger.log(tom.substring(0,10))
Logger.log(t);
for (var i = 0; i < orderDate.length; i++) {
Logger.log(orderDate[i])
if (t === orderDate[i]) { // This is what I cant get to evaluate true- No Match
Logger.log("YES"+orderDate)
}}}
function tomorrow() {
let dt = new Date();
dt.setDate(dt.getDate() + 1);
Logger.log(dt);
return dt.valueOf();//milliseconds can be used in numerical comparisons
}
function tomorrowstartofday() {
let dt = new Date();
let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
Logger.log(t);
return t.valueOf();
}
这是一个选择一天内发生的时间戳的小例子:
假数据:
TimeStamp
day type
10/11/2021 0:00:00
yesterday
10/11/2021 12:00:00
yesterday
10/12/2021 0:00:00
start of day
10/12/2021 12:00:00
today
10/13/2021 0:00:00
tomorrow
10/13/2021 12:00:00
tomorrow
代码:
function timestampsfortoday() {
const dt = new Date();
const tod = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();//today
const tom = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1).valueOf();//tomorrow
let ts = [];
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const vs = sh.getRange(2,1,sh.getLastRow() - 1,2).getValues();
vs.forEach(r => {
let d = new Date(r[0]).valueOf();//using Date() constructor to get date value from timestamp
if(d > tod && d < tom) {
ts.push(r);
}
});
Logger.log(ts.join('\n'))
}
执行日志:
9:58:44 AM Notice Execution started
9:58:46 AM Info Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
9:58:45 AM Notice Execution completed
它只选择了第二列中包含今天的行,因为这是今天开始到明天开始之间的唯一一行。
如果在循环中使用这一行进行比较:
if(d >= tod && d < tom)
你明白了:
Execution log
10:05:58 AM Notice Execution started
10:05:59 AM Info Tue Oct 12 2021 00:00:00 GMT-0600 (Mountain Daylight Time),start of day
Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
10:05:59 AM Notice Execution completed
我试图将明天的日期与通过 google 表单提交的日期相匹配。在记录器中它似乎匹配但它不会记录 YES 并且不会评估为真。
我的努力:
function ArchiveTuesdayOrder() {
let dt = new Date();
let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
const date = new Date();
date.setDate(date.getDate() + 1);
var tom = Utilities.formatDate(date, "America/New_York", 'EEE MMM dd yyyy HH:mm:ss Z');
var tomDate = Utilities.formatDate(date, "America/New_York", "MM-dd-yyyy");
var sheetActive = SpreadsheetApp.openById("xxxxxxxxxxxxxx");
var sheet = sheetActive.getSheetByName("xxxxxxxxxxxxxx");
//var orderDate = sheet.getRange(2,3,100).getValues();
var orderdateRange = sheet.getRange(2, 4, 100);
var orderDate = orderdateRange.getValues();
Logger.log(tom.substring(0,10))
Logger.log(t);
for (var i = 0; i < orderDate.length; i++) {
Logger.log(orderDate[i])
if (t === orderDate[i]) { // This is what I cant get to evaluate true- No Match
Logger.log("YES"+orderDate)
}}}
function tomorrow() {
let dt = new Date();
dt.setDate(dt.getDate() + 1);
Logger.log(dt);
return dt.valueOf();//milliseconds can be used in numerical comparisons
}
function tomorrowstartofday() {
let dt = new Date();
let t = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1);//default for items not provided in the constructor is zero
Logger.log(t);
return t.valueOf();
}
这是一个选择一天内发生的时间戳的小例子:
假数据:
TimeStamp | day type |
---|---|
10/11/2021 0:00:00 | yesterday |
10/11/2021 12:00:00 | yesterday |
10/12/2021 0:00:00 | start of day |
10/12/2021 12:00:00 | today |
10/13/2021 0:00:00 | tomorrow |
10/13/2021 12:00:00 | tomorrow |
代码:
function timestampsfortoday() {
const dt = new Date();
const tod = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();//today
const tom = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate() + 1).valueOf();//tomorrow
let ts = [];
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const vs = sh.getRange(2,1,sh.getLastRow() - 1,2).getValues();
vs.forEach(r => {
let d = new Date(r[0]).valueOf();//using Date() constructor to get date value from timestamp
if(d > tod && d < tom) {
ts.push(r);
}
});
Logger.log(ts.join('\n'))
}
执行日志:
9:58:44 AM Notice Execution started
9:58:46 AM Info Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
9:58:45 AM Notice Execution completed
它只选择了第二列中包含今天的行,因为这是今天开始到明天开始之间的唯一一行。
如果在循环中使用这一行进行比较:
if(d >= tod && d < tom)
你明白了:
Execution log
10:05:58 AM Notice Execution started
10:05:59 AM Info Tue Oct 12 2021 00:00:00 GMT-0600 (Mountain Daylight Time),start of day
Tue Oct 12 2021 12:00:00 GMT-0600 (Mountain Daylight Time),today
10:05:59 AM Notice Execution completed