我的工作表中有一列具有自定义日期格式。格式是在整个列上设置的。如果在工作表内的列中输入日期值,则会显示我指定的格式。但是,如果我使用谷歌应用程序脚本附加一个新行,它将不会遵守格式。
在通过Google Apps脚本添加行之前:
| Timestamp | Message |
|---------------------------|---------|
| 2019-01-01 @ 13:12:32.013 | test |
添加行后:
| Timestamp | Message |
|---------------------------|---------|
| 2019-01-01 @ 13:12:32.013 | test |
| 1/2/2019 14:51:31 | test2 |
添加行的Google Apps脚本代码:
SpreadsheetApp.getActiveSheet().appendRow([new Date(), "test2"])
是否有一种方法可以让工作表按照格式化规则格式化要添加的日期?
我发现的唯一方法是将数据转换为一个整数,表示自1899-12-30以来的天数,但这似乎非常棘手。
var dateSerial = ((new Date()) - (new Date(1899, 11, 30))) / 1000 / 60 / 60 / 24;
正如@Cooper在他的评论中提到的,您可以通过实用程序来实现这一点。formatDate()
。
我用下面的脚本进行了测试,日期格式完全符合您的要求。
function addDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var tz = ss.getSpreadsheetTimeZone();
var d = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd @ hh:mm:ss.SSS');
sh.appendRow([d,'test']);
}
您真正需要感兴趣的是定义日期的var d
。我使用电子表格时区,但你可以使用任何你喜欢的时区。
var d = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd @ hh:mm:ss.SSS');
编辑:
用户不希望在脚本本身中设置日期格式,相反,我们可以使用getNumberFormat()
从上面的列中获取数字格式,然后使用setNumberFormat()
基于此格式化新条目。
有关详细信息,请参见下面的脚本。
function setDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var lr = sh.getLastRow();
//get format for last row in column A
var format = sh.getRange(lr, 1).getNumberFormat();
//add new data to sheet
sh.appendRow([new Date(), 'test']);
//format new data
sh.getRange(lr+1, 1).setNumberFormat(format);
}
我试图使用一个谷歌脚本,从检索2个证券字段,并将输出保存到Google Sheet文件。我还需要脚本将datetime添加到工作表的第一列。 我创建了一个包含3列的基本Google工作表: A的格式为DateTime。第1行中有列名称date,第2行之后为空 以下是我的功能: 以下是输出: C和D列的输出正确。A列输出错误。每次我运行该函数时,每一行都会在最后一行的上方添加: 我第一次运行该函数是
我有一个GoogleApps电子表格,其中一列包含日期和时间。这张纸是由几张纸合并而成的。在某些行上,该值是一个日期(即typeof sheet.getRange(i,2).getValue()==“object”,带有日期的方法)。其他时间,此单元格是一个数字(即typeof sheet.getRange(i,2).getValue()=“number”),但单元格格式将单元格显示为一个日期。
问题内容: 我正在尝试将n个(整数)工作日添加到给定的日期,添加日期必须避免假期和周末(工作日中不包括该日期) 问题答案: 跳过周末很容易做到这一点: 假期的问题在于假期因国家或地区,宗教信仰等的不同而有很大差异。您需要为用例提供一份假期清单/一套,然后以类似的方式跳过它们。一个起点可能是苹果为iCal发布的日历供稿(以ics格式),而在美国的日历供稿则是http://files.apple.co
我知道在Java中,可以使用在一定延迟后执行特定任务。这篇文章展示了如何在特定日期执行任务,但不是使用。例如,我有一个如下初始化的格式: 此外,我想执行在中的语句下声明的特定任务,例如: 如何初始化在特定日期在内和/或使用语句执行的,最好使用?
因此,如果我的当前日期是6月9日,那么当前日期应该是06/09/14,modifiedDate应该是2014年6月13日。 这怎么做?
问题内容: 我正在尝试将以下字符串转换为日期类型: 但这是打印以下内容: 我如何获得这个日期来保留毫秒? 问题答案: 实际上,convertedDate对象确实包含毫秒信息。这里的问题是toString()方法格式不能打印毫秒。 做 您还可以检查ms是否设置为