copyValuesToRange更改日期格式

时间:2016-04-28 22:16:37

标签: google-apps-script google-sheets

我正在使用Google脚本中的.copyValuesToRange功能将输入页面中的某些信息复制到Google表格文件中的历史页面。正在复制的范围中的一个单元格是Date,格式化为MM / DD。

我有两个输入页面和两个相应的历史页面。当我在第一个输入页面上运行copyToValueRange()时 - >历史页面,它正确复制所有值。当我为第二页运行脚本时,它以MM / DD格式复制日期并将其转换为Microsoft时间戳(#####)。

起初我以为它在那里放了一个随机整数,但经过一些搜索和计算器网站(http://www.silisoftware.com/tools/date.php)的帮助后,我发现它实际上是将日期转换为不同的格式

为什么会在一次调用copyValuesToRange()而不是另一次调用时发生这种情况?我是否需要使用Utilities.formatDate()以某种方式处理日期格式?

1 个答案:

答案 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。这种方法经常被误认为是设备格式化电子表格单元格。这不是它的作用;它将日期转换为字符串。