Date 在GoogleApps脚本中,我的约会从一个普通格式切换到一个看起来像id号的格式
我正在使用GoogleApps脚本创建一个GoogleSheet,它可以按日期将单元格区域排序到不同的工作表中。我在单元格A2中输入了一个日期,然后当我使用我的函数时,它会使用与A2中相同的日期对工作表进行排序,如果没有,它会创建一个具有该日期的新工作表。我遇到的问题不是细胞到达了正确的位置,而是由于某种原因,日期变为某种类型的id。例如,在2001年1月1日,第一对夫妇工作正常,然后在接下来的几次尝试中,它将日期改为“36892” 我什么都没试过,因为我不知道该试什么。如果我知道这个命令,我会在将单元格移动到正确的位置后将格式切换回来Date 在GoogleApps脚本中,我的约会从一个普通格式切换到一个看起来像id号的格式,date,google-apps-script,google-sheets,format,Date,Google Apps Script,Google Sheets,Format,我正在使用GoogleApps脚本创建一个GoogleSheet,它可以按日期将单元格区域排序到不同的工作表中。我在单元格A2中输入了一个日期,然后当我使用我的函数时,它会使用与A2中相同的日期对工作表进行排序,如果没有,它会创建一个具有该日期的新工作表。我遇到的问题不是细胞到达了正确的位置,而是由于某种原因,日期变为某种类型的id。例如,在2001年1月1日,第一对夫妇工作正常,然后在接下来的几次尝试中,它将日期改为“36892” 我什么都没试过,因为我不知道该试什么。如果我知道这个命令,我会
function findDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
ss.setActiveSheet(ss.getSheets()[0])
var range = sheet.getRange("A2");
var A2 = SpreadsheetApp.getActiveSheet().getRange('A2').getValue();
var templateSheet = ss.getActiveSheet();
var val = Utilities.formatDate(new Date(A2), "GMT+1", "MM/dd/yyyy");
range.setValue(new Date(A2)).setNumberFormat("MM/dd/yyyy");
A2 = SpreadsheetApp.getActiveSheet().getRange('A2').getValue();
if( ss.getSheetByName(val) == null)
{
//if returned null means the sheet doesn't exist, so create it
ss.insertSheet(val, ss.getSheets().length, {template: templateSheet});
}
else
{
var sheet1 = ss.getSheetByName("GUI");
var sheet2 = ss.getSheetByName(val);
sheet1.getRange("A2:D2").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,1,4), {contentsOnly:true});
}
ss.setActiveSheet(ss.getSheets()[0]);
sheet.getRange("A2:D2").clearContent();
}
这是我的职责。因为我不知道问题出在哪里,所以我复制了整个内容,对不起,太多了
Date Event Time Comments
01/01/2001 Movie 22:00 a
01/01/2001 Movie 11:00 PM a
36892 Movie 0.7083333333 a
36892 Movie 12:00 PM a
这是由于每次都添加相同的日期,并使用函数将它们排序到正确的工作表中。时间是奇怪的,我真的不知道为什么,但我不在乎这一点,这是一个未来的问题(除非任何人有任何线索,为什么它会改变格式太)。然而,日期似乎不是某个随机数,因为同一日期给出了相同数字的输出。我本以为会是这样的:
Date Event Time Comments
01/01/2001 Movie 10:00 PM a
01/01/2001 Movie 11:00 PM a
01/01/2001 Movie (I forget) a
01/01/2001 Movie 12:00 PM a
答复:
您需要从copyTo()
方法中删除{contentsOnly:true}
推理:
通过将contentsOnly
布尔值设置为true,您告诉工作表复制它在单元格中看到的内容,而不是您看到的内容
在工作表中,从1900年1月1日开始的所有日期都以1为一天进行序列化,因此复制01/01/2001
是以序列号36892
为一天的
至于日期-它被解读为一天中距离的一小部分-在
17:00h
和一天中的24小时,日期将被视为17/24
或0.708333333
,尽管我不确定我是否能正确理解你的情况,例如,在你的脚本中,{contentsOnly:true}
被删除,您将检索什么结果?