【发布时间】:2017-08-02 23:28:09
【问题描述】:
我正在制定一个考勤计划,在找到两个匹配的特定 ID 号后,我想确认用户没有意外登录/通过比较两个时间戳的日期并确保它们相同。我一直在寻找方法来比较使用 unix 开始日期的毫秒数,但不是一种按日期明确进行比较的方法。谁能帮忙谢谢
【问题讨论】:
标签: google-apps-script google-apps
我正在制定一个考勤计划,在找到两个匹配的特定 ID 号后,我想确认用户没有意外登录/通过比较两个时间戳的日期并确保它们相同。我一直在寻找方法来比较使用 unix 开始日期的毫秒数,但不是一种按日期明确进行比较的方法。谁能帮忙谢谢
【问题讨论】:
标签: google-apps-script google-apps
如果您想比较时间戳的日期和离开的时间,您可以使用类似的方法来生成日期或时间。
function messinWithTime()
{
var ss=SpreadsheetApp.getActive();
var sht=ss.getActiveSheet();
var rng=sht.getDataRange();
var rngA=rng.getValues();
for(var i=1;i<rngA.length;i++)
{
rngA[i][1]=Utilities.formatDate(new Date(rngA[i][0]), Session.getScriptTimeZone(), "MM/dd/yy");
rngA[i][2]=Utilities.formatDate(new Date(rngA[i][0]), Session.getScriptTimeZone(), "HH:mm:ss");
}
rng.setValues(rngA);
}
这是我的表格,其中只有链接表格中的时间戳:
这是我将时间戳转换为单独的日期和时间后的工作表。
我认为这会为您解决问题。
代码.gs:
function movinToDailySheets()
{
var ss=SpreadsheetApp.getActive();
var sh0=ss.getSheetByName('Responses');
var rg0=sh0.getDataRange();
var rg0A=rg0.getValues();
for(var i=0;i<rg0A.length;i++)
{
if(!rg0A[i][4])
{
var destSheet=Utilities.formatDate(new Date(rg0A[i][0]), Session.getScriptTimeZone(), "MMM dd, yyyy");
if(!isSheet(destSheet) )
{
var destSht=ss.insertSheet(destSheet);
}
destSht.appendRow(rg0A[i]);
sh0.getRange(i+1,5).setValue('Done');
}
}
}
function isSheet(name)
{
var ss=SpreadsheetApp.getActive();
var allsheets=ss.getSheets();
var r=false;
for(var i=0;i<allsheets.length;i++)
{
if(name==allsheets[i].getName())
{
r=true;
break;
}
}
return r;
}
这是我的起始电子表格。我在末尾添加了一个名为“已完成”的列,这样当此函数再次运行时,它不会将旧数据附加到工作表中。
这是运行代码后电子表格的样子。
这些是已创建的工作表。
每张纸都有数据。这是 2017 年 8 月 1 日的数据。
【讨论】: