我正在使用Google脚本中的.copyValuesToRange功能将输入页面中的某些信息复制到Google表格文件中的历史页面。正在复制的范围中的一个单元格是Date,格式化为MM / DD。
我有两个输入页面和两个相应的历史页面。当我在第一个输入页面上运行copyToValueRange()时 - >历史页面,它正确复制所有值。当我为第二页运行脚本时,它以MM / DD格式复制日期并将其转换为Microsoft时间戳(#####)。
起初我以为它在那里放了一个随机整数,但经过一些搜索和计算器网站(http://www.silisoftware.com/tools/date.php)的帮助后,我发现它实际上是将日期转换为不同的格式
为什么会在一次调用copyValuesToRange()而不是另一次调用时发生这种情况?我是否需要使用Utilities.formatDate()以某种方式处理日期格式?
答案 0 :(得分:2)
方法copyValuesToRange
执行其承诺:将值复制到范围。在Google电子表格中,日期“4/28/2016”只是恰好被格式化为日期的数字42488。因此,这个数字会按照设计被复制。
您想要复制值和格式。为此,请使用copyTo方法:
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A1:A5").copyTo(sheet.getRange("B1:B5"));
方法copyValuesToRange
对我来说看起来很旧(它需要几乎没有其他方法使用的“gridId”参数)。我认为copyTo
可用已经过时了。方法copyTo
还接受指示是仅复制内容,仅复制格式还是同时复制两者的选项(默认)。
不,你不想要Utilities.formatDate
。这种方法经常被误认为是设备格式化电子表格单元格。这不是它的作用;它将日期转换为字符串。